什么是多態?
多態指的是一類事物有多種形態
動物有多種形態:人,狗,豬
多態:指的是定義角度
多態性:指的是使用角度
import abc # 多態:同一種事物的多種形態,動物分為:豬類,人類 class Animal(metaclass=abc.ABCMeta): @abc.abstractmethod # 子類必須繼承 def run(self): pass class pig(Animal): def run(self): # 繼承父類必須有這個方法 print('pig is walking') pass class pepple(Animal): def run(self): print('pepple is walking') peo1=pepple() pig1=pig() # peo1.run() # pig1.run() # 多態性:一種調用方式,多種執行結果 依賴於: ''' 1、繼承 ''' # 定義統一的接口,可以傳入不同類型的值,但是調用的邏輯都一樣,執行的結果卻不一樣 def fun(obj): # obj 這個參數沒有類型限制,可以傳入不同的值 obj.run() # 大家都繼承 animal 類,都有 run,但執行的結果不一樣 fun(peo1) fun(pig1) pepple is walking pig is walking 不同類型的值,調用同一接口,出現不同的結果 ================== l=[1,2,3,4] s='hello' t=(4,5,6,7,8) # 3個不同類型的值 def fun1(obj): # 定義統一接口 return obj.__len__() print(fun1(l)) print(fun1(s)) print(fun1(t)) 返回不一樣的結果 4 5 5
為什么要用多態性(多態性的好處)
其實大家從上面多態性的例子可以看出,我們並沒有增加什么新的知識,也就是說python本身就是支持多態性的,這么做的好處是什么呢?
1.增加了程序的靈活性
以不變應萬變,不論對象千變萬化,使用者都是同一種形式去調用,如func(animal)
2.增加了程序額可擴展性
通過繼承animal類創建了一個新的類,使用者無需更改自己的代碼,還是用func(animal)去調用