本文以廖雪峯的官方網站爲參考來學習python的。其學習鏈接爲廖雪峯小白學python教程。
本文是學習到python的多重繼承。參考鏈接廖雪峯python多重繼承。
本學習筆記僅供參考。
class Animal(object):
pass
#大類
class Mammal(Animal):
pass
class Bird(Animal):
pass
#各種動物:
class Dog(Mammal):
pass
class Bat(Mammal):
pass
class Parrot(Bird):
pass
class Ostrich(Bird):
pass
class Runnable(object):
def run(self):
print("Runing...")
class Flyable(object):
def fly(self):
print("Flying...")
class Dog(Mammal,Runnable):
pass
class Bat(Mammal,Flyable):
pass
筆記:
MixIn:
在設計類的繼承關係時,通常,主線都是單一繼承下來的。
如果需要“混入”額外功能,可以通過多態繼承來實現。
上面代碼還可以定義肉食動物CarnivorousMixIn和植食動物HerbivoresMixln,讓某個動物同時擁有好幾個Mixln。
筆記:
MixIn的目的就是給一個類增加多個功能。在設計類時,優先考慮通過多重繼承來組合多個Mixln功能,而不是設計多層的複雜的繼承關係。
筆記:
Python自帶很多庫也使用了MixIn。例如:python自帶了TCPServer和UDPServer這兩類網絡服務器,而要服務多個用戶就必須使用多線程和多進程模型。這兩種模型由ForkingMixIn和ThreadingMixIn提供。通過組合可以創造出合適的服務來。
筆記:
小結:
由於python允許使用多重繼承,因此MixIn是一種常見的設計。
只允許單一繼承的語言(如Java)不能使用Mixln的設計