在程式設計中,鴨子型別(duck typing)是動態型別的一種風格。
鴨子型別的核心概念在於乙個物件的有效語義,不是繼承自特定的類或者實現特定的方法,而是由當前的屬性和方法集合決定的。。
「鴨子型別」可以這樣表述:
乙隻鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼這只鳥可以被稱為鴨子「
在鴨子型別中,關注點在於物件的行為,能作什麼;而不是關注物件所屬的型別。
例如,在不使用鴨子型別的語言中,我們可以編寫乙個函式,它接受乙個型別為"鴨子"的物件,並呼叫它的"走"和"叫"方法。
在使用鴨子型別的語言中,這樣的乙個函式可以接受乙個任意型別的物件,並呼叫它的"走"和"叫"方法。如果這些需要被呼叫的方法不存在,那麼將引發乙個執行時錯誤。
任何擁有這樣的正確的"走"和"叫"方法的物件都可被函式接受的這種行為引出了以上表述,即這個物件就是鴨子型別。
class dog(object):def kanmen(self):
pass
def walk(self):
pass
def crying(self):
pass
class people(object):
def run(self):
pass
def playball(self):
pass
class cat(object):
def swim(self):
pass
class animal(dog,people,cat):
def __init__(self):
pass
obj = animal()
obj.walk()
obj.swim()
obj.crying()
#obj物件走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼obj就可以被稱為鴨子
Python多型 鴨子型別
多型指的是一類事物有多種形態。動物有多種形態 人,狗,豬 import abcclass animal metaclass abc.abcmeta 同一類事物 動物 abc.abstractmethod deftalk self pass class people animal 動物的形態之一 人 ...
python物件導向程式設計(鴨子型別)
python不支援多型,也不用支援多型,而是一種多型的語言。鴨子型別 duck typing 是動態型別的一種風格,不是由繼承特定的類或實現特定的介面,而是當前的方法和屬性的集合決定,鴨子型別中關注的不是物件的型別本身,而是他如何使用。簡單理解 在使用支援鴨子型別的語言中,乙個函式可以接受任意型別的...
python 多型和鴨子型別
多型 class animal def say self print 動物在叫 class people animal def say self super say print 嚶嚶嚶 class dog animal def say self super say print 汪汪汪 class p...