老生常談python之鴨子類和多態(tài)
一、 什么是多態(tài)
<1>一種類型具有多種類型的能力
<2>允許不同的對象對同一消息做出靈活的反應(yīng)
<3>以一種通用的方式對待個使用的對象
<4>非動態(tài)語言必須通過繼承和接口的方式來實現(xiàn)
二、 python中的多態(tài)
<1>通過繼承實現(xiàn)多態(tài)(子類可以作為父類來使用)
<2>子類通過重載父類的方法實現(xiàn)多態(tài)
class Animal:
def move(self):
print('animal is moving....')
class Dog(Animal):
pass
def move(obj):
obj.move()
>>>move(Animal())
>>>animal is moving....
>>>move(Dog())
>>>animal is moving....
class Fish(Animal):
def move(self):
print('fish is moving....')
>>>move(Fish())
>>>fish is moving....
三、 動態(tài)語言和鴨子類型
<1>變量綁定的類型是不確定的
<2>函數(shù)和方法可以接收任何類型的參數(shù)
<3>調(diào)用方法時不檢查提供的參數(shù)類型
<4>調(diào)用是否成功有參數(shù)的方法和屬性確定,調(diào)用不成功則拋出錯誤
<5>不用實現(xiàn)接口
class P:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, oth):
return P(self.x+oth.x, self.y+oth.y)
def info(self):
print(self.x, self.y)
class D(P):
def __init__(self, x, y, z):
super.__init__(x, y)
self.z = z
def __add__(self, oth):
return D(self.x+oth.x, self.y+oth.y, self.z+oth.z)
def info(self):
print(self.x, self.y, self.z)
class F:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def __add__(self, oth):
return D(self.x+oth.x, self.y+oth.y, self.z+oth.z)
def info(self):
print(self.x, self.y, self.z)
def add(a, b):
return a + b
if __name__ == '__main__':
add(p(1, 2), p(3, 4).info())
add(D(1, 2, 3), D(1, 2, 3).info())
add(F(2, 3, 4), D(2, 3, 4).info())四、 多態(tài)的好處
<1>可實現(xiàn)開放的擴(kuò)展和修改的封閉
<2>使python程序更加的靈活
以上這篇老生常談python之鴨子類和多態(tài)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python 如何用 Hypothesis 來自動化單元測試
這篇文章主要介紹了python 如何用 Hypothesis 來自動化單元測試,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03
Python3環(huán)境安裝Scrapy爬蟲框架過程及常見錯誤
這篇文章主要介紹了Python3環(huán)境安裝Scrapy爬蟲框架過程及常見錯誤 ,本文給大家介紹的非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07
python實現(xiàn)redis三種cas事務(wù)操作
本篇文章主要介紹了python實現(xiàn)redis三種cas事務(wù)操作,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
python中隨機(jī)函數(shù)random用法實例
這篇文章主要介紹了python中隨機(jī)函數(shù)random用法,實例分析了random函數(shù)的相關(guān)使用技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
Python找出列表中出現(xiàn)次數(shù)最多的元素三種方式
本文通過三種方式給大家介紹Python找出列表中出現(xiàn)次數(shù)最多的元素,每種方式通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下2020-02-02

