鴨子類(lèi)型是動(dòng)態(tài)類(lèi)型語(yǔ)言判斷一個(gè)對(duì)象是不是某種類(lèi)型時(shí)使用的方法,也叫做鴨子判定法。簡(jiǎn)單的說(shuō),鴨子類(lèi)型是指判斷一只鳥(niǎo)是不是鴨子,我們只關(guān)心它游泳像不像鴨子、叫起來(lái)像不像鴨子、走路像不像鴨子就足夠了。
換言之,如果對(duì)象的行為跟我們的預(yù)期是一致的(能夠接受某些消息),我們就認(rèn)定它是某種類(lèi)型的對(duì)象。
在Python語(yǔ)言中,有很多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操作,可以像文件一樣讀寫(xiě),這就是所謂的對(duì)象有鴨子的行為就可以判定為鴨子的判定方法。
再比如Python中列表的extend方法,它需要的參數(shù)并不一定要是列表,只要是可迭代對(duì)象就沒(méi)有問(wèn)題。 說(shuō)明:動(dòng)態(tài)語(yǔ)言的鴨子類(lèi)型使得設(shè)計(jì)模式的應(yīng)用被大大簡(jiǎn)化。