多型及多型性多型指的是同一類/種事物的不同形態(其實就是繼承關係的表現)
多型只是一種格式形態,它的主要體現是多型性
多型性在類中的簡單表現形式:
class animal():def run(self):
print('run fast')
class mouse(animal):
def sound(self):
print('5555')
obj=mouse() #你看,這裡是在mouse類中進行了例項化,但下面的obj呼叫的run()在mouse類中並不存在
#我們自然而然就會想到mouse繼承了animal,所以obj會跑到animal類中去找run()這個函式
#為什麼程式會通過.run()自己自動跑到父類裡面去找,這就是多型提供的。
obj.run()多型性:在多型的背景下,可以在不用考慮物件具體型別(也就是不管是子類還是父類中存在這種方法)的前提下而直接使用物件
多型性的精髓:統一(統一方法。繼承關係下,子類方便呼叫父類中的方法)
當然,匯入abc模組,能夠讓子類強制執行父類的功能(也就是子類自己有該方法,但只要父類中也有,子類就必須用父類的。有點不講道理,所以用的比較少)
import abc #view codeabstract class
class animal(metaclass=abc.abcmeta):
@abc.abstractmethod
defeat(self):
pass
@abc.abstractmethod
defdrink(self):
pass
@abc.abstractmethod
defrun(self):
pass
@abc.abstractmethod
defbark(self):
pass
#obj=animal() # 抽象基類本身不能被例項化
class
cat(animal):
defeat(self):
print('
cat eat')
defdrink(self):
print('
cat drink')
defrun(self):
print('
cat run')
defbark(self):
print('
喵喵喵'
)c=cat()
擴充套件(python統一思想----一切皆物件,linux統一思想----一切皆檔案)
鴨子型別python是比較崇尚鴨子型別的,目的也是也是和多型一樣,為了統一。只不過鴨子型別統一**的格式。
例子一(這是非常經典的乙個例子):
classview codeduck():
defwalk(self):
print('
i walk like a duck')
defswim(self):
print('
i swim like a duck')
class
person():
defwalk(self):
print('
this one walk like a duck')
defswim(self):
print('
this man swim like a duck
')
例子二:
classview codedisk:
defread(self):
print('
disk read')
defwrite(self):
print('
disk write')
class
memory:
defread(self):
print('
mem read')
defwrite(self):
print('
mem write')
class
cpu:
defread(self):
print('
cpu read')
defwrite(self):
print('
cpu write')
obj1=disk()
obj2=memory()
obj3=cpu()
obj1.read()
obj2.read()
obj3.read()
多型 多型性和鴨子型別
目錄多型指的是同一種事物有多種形態,比如水有液態 固態和氣態。乙個抽象類有多個子類,因而多型的概念依賴於繼承。class animal def talk self pass class dog animal def talk self print 汪汪汪 class cat animal def t...
多型性與鴨子型別
多型指的是一類事物有多種形態,比如動物有多種形態 貓 狗 豬 class animal 同一類事物 動物 deftalk self pass class cat animal 動物的形態之一 貓 deftalk self print 喵喵喵 class dog animal 動物的形態之二 狗 de...
多型性與鴨子型別
class animal pass class people animal pass class dog animal pass class pig animal pass為何要有多型 多型會帶來什麼樣的特性 多型性指的是可以在不考慮物件具體型別的情況下而直接使用物件 class animal 統一...