鴨子類型是動(dòng)態(tài)類型語言判斷一個(gè)對(duì)象是不是某種類型時(shí)使用的方法,也叫做鴨子判定法。簡(jiǎn)單的說,鴨子類型是指判斷一只鳥是不是鴨子,我們只關(guān)心它游泳像不像鴨子、叫起來像不像鴨子、走路像不像鴨子就足夠了。
換言之,如果對(duì)象的行為跟我們的預(yù)期是一致的(能夠接受某些消息),我們就認(rèn)定它是某種類型的對(duì)象。
在Python語言中,有很多bytes-like對(duì)象(如:bytes、bytearray、array.array、memoryview)、file-like對(duì)象(如:StringIO、BytesIO、GzipFile、socket)、path-like對(duì)象(如:str、bytes),其中file-like對(duì)象都能支持read和write操作,可以像文件一樣讀寫,這就是所謂的對(duì)象有鴨子的行為就可以判定為鴨子的判定方法。
再比如Python中列表的extend方法,它需要的參數(shù)并不一定要是列表,只要是可迭代對(duì)象就沒有問題。 說明:動(dòng)態(tài)語言的鴨子類型使得設(shè)計(jì)模式的應(yīng)用被大大簡(jiǎn)化。