1. 程式人生 > >python的三大特性之多型(鴨子型別)

python的三大特性之多型(鴨子型別)

多型

多型指的是一類事物有多種形態
例如:

peo=People()
dog=Dog()
pig=Pig()

#peo、dog、pig都是動物,只要是動物肯定有talk方法
#於是我們可以不用考慮它們三者的具體是什麼型別,而直接使用
peo.talk()
dog.talk()
pig.talk()

#更進一步,我們可以定義一個統一的介面來使用
def func(obj):
    obj.talk()

鴨子型別

class QQpay():
    def pay(self,money):
        print('使用qq支付了%s元'%money)
 
class Wechatpay():
    def pay(self,money):
        print('使用微信支付了%s元'%money)
 
def pay(pay_obj,money):
    pay_obj.pay(money)

多型VS鴨子型別

多型 通過繼承實現

# java 在一個類之下發展出來的多個類的物件都可以作為引數傳入一個函式或者方法
# 在python中不需要刻意實現多型,因為python本身自帶多型效果

鴨子型別

# 不是通過具體的繼承關係來約束某些類中必須有哪些方法名
# 是通過一種約定俗成的概念來保證在多個類中相似的功能叫相同的名字

Python崇尚鴨子型別