python物件導向程式設計(鴨子型別)

2021-09-20 04:33:11 字數 903 閱讀 2159

python不支援多型,也不用支援多型,而是一種多型的語言。

鴨子型別(duck typing):是動態型別的一種風格,不是由繼承特定的類或實現特定的介面,而是當前的方法和屬性的集合決定,鴨子型別中關注的不是物件的型別本身,而是他如何使用。

簡單理解:在使用支援鴨子型別的語言中,乙個函式可以接受任意型別的物件,只要該物件具有實現了相同的方法即可。

使用例項:

class disk:

def read(self):

print('disk read')

self.write()

def write(self):

print('disk write')

class text:

def read(self):

print('text read')

self.write()

def write(self):

print('text write')

def duck_demo(obj):

obj.read()

disk = disk()

text = text()

duck_demo(disk)

duck_demo(text)

#disk.read()

#disk.write()

#text.read()

#text.write()

"""disk read

disk write

text read

text write

"""

如上述所示,disk和text具有都實現了read()和write()方法,duck_demo()方法可以看做是乙個通知型介面,由該函式確定呼叫物件的哪個方法

鴨子型別特點:

鴨子型別 物件導向多型的理解

在程式設計中,鴨子型別 duck typing 是動態型別的一種風格。鴨子型別的核心概念在於乙個物件的有效語義,不是繼承自特定的類或者實現特定的方法,而是由當前的屬性和方法集合決定的。鴨子型別 可以這樣表述 乙隻鳥走起來像鴨子 游泳起來像鴨子 叫起來也像鴨子,那麼這只鳥可以被稱為鴨子 在鴨子型別中,...

python的鴨子型別

這次簡單介紹下 鴨子型別的概念。當看到乙隻鳥走起來像鴨子 游泳起來像鴨子 叫起來也像鴨子,那麼這只鳥就可以被稱為鴨子。鴨子型別關注點在物件的行為,而不是型別。在 python 和 go 中都可以實現鴨子型別。示例 如下 class duck def init self,name self.name ...

Python多型 鴨子型別

多型指的是一類事物有多種形態。動物有多種形態 人,狗,豬 import abcclass animal metaclass abc.abcmeta 同一類事物 動物 abc.abstractmethod deftalk self pass class people animal 動物的形態之一 人 ...