多型
多型指的是一類事物有多種形態——如:動物有多種形態:人、狗、豬。
多型性
指在不考慮例項型別的情況下使用例項,多型性分為靜態多型性和動態多型性。
靜態多型性——任何型別都可以用運算子【+】進行運算。
eg:字串+字串;數字+數字;列表+列表。我們在使用【+】號時也沒有考慮型別
動態多型性如下:
#動態多型性動態多型性
import
abcclass animal(metaclass=abc.abcmeta):
@abc.abstractmethod
defeat(self):
pass
@abc.abstractmethod
defrun(self):
pass
class
dog(animal):
defeat(self):
print('
is eatting')
defrun(self):
print('
is running')
class
pig(animal):
defeat(self):
print('
is eatting')
defrun(self):
print('
is running')
dog1 =dog()
pig1 =pig()
dog1.eat()
pig1.eat()
#dog、pig 都是動物,只要是動物都有eat run方法
#於是我們可以不用考慮它們的具體是什麼型別,而直接使用
#更進一步,我們可以定義乙個統一的介面來使用
deffunc(obj):
obj.eat()
func(dog1)
動態多型性的意思是我們在使用物件的時候不需要考慮類的型別。
多型性的好處:
1、增加程式的靈活性
使用者都是同一種形式去呼叫,如func(obj)
2、增加了程式的額外可擴充套件性
通過animal類建立了乙個新的類,使用者不需要修改自己原有的**,還是用func(obj)去呼叫。
import建立乙個新的了類abcclass animal(metaclass=abc.abcmeta):
@abc.abstractmethod
defeat(self):
pass
@abc.abstractmethod
defrun(self):
pass
@abc.abstractmethod
deftalk(self):
pass
class
dog(animal):
defeat(self):
print('
is eatting')
defrun(self):
print('
is running')
deftalk(self):
print('
wawa')
class
pig(animal):
defeat(self):
print('
is eatting')
defrun(self):
print('
is running')
deftalk(self):
print('
pipi')
class
cat(animal):
defeat(self):
print('
is eatting')
defrun(self):
print('
is running')
deftalk(self):
print('
maomao')
dog1 =dog()
pig1 =pig()
cat1 =cat()
dog1.eat()
pig1.eat()
cat1.talk()
#dog、pig 都是動物,只要是動物都有eat run方法
#於是我們可以不用考慮它們的具體是什麼型別,而直接使用
#更進一步,我們可以定義乙個統一的介面來使用
deffunc(obj):
obj.eat()
func(cat1)
鴨子型別
python 崇尚鴨子型別,即『如果看起來像、叫聲像而且走起路來像鴨子,那麼它就是鴨子』
類的多型與多型性
多型是指一類事物有多種形態 class animal def speak self print f 開口說話 動物的形態之一 人 class people animal def speak self print 呵呵呵 動物的形態之二 狗 class duck animal def speak se...
Python 多型與多型性
同一種事務的多種形態 就是多型 車有多種形態,你沒有具體學習某乙個物件,你是學的怎麼開車 這就是多型性 1 增加了程式的靈活性 以不變應萬變,不論物件千變萬化,使用者都是同一種形式去呼叫,如func animal 2 增加了程式可擴充套件性 通過繼承animal類建立了乙個新的類,使用者無需改變自己...
多型與多型性
1.什麼是多型 多型指的是同一種 類事物的不同形態 2.為何要用多型性 1 增加了程式的靈活性 2 增加了程式的可擴張性 多型性 分為靜態多型性和動態多型性 多型性 在多型的背景下,可以在不用考慮物件具體型別的前提下而直接使用物件 多型性的精髓 統一 3.如何用多型 class animal def...