參考:多重繼承
NOTE
#!/usr/bin/env python3
class Animal(object):
def __init__(self, name):
self.name = name
def getname(self):
print(self.name)
class Fly(object):
def __init__(self):
pass
def getfly(self):
print('could fly')
class Bird(Animal, Fly):
pass
def main():
b = Bird('bird')
b.getname()
b.getfly()
if __name__ == '__main__':
main()
sh-3.2# ./oop10.py
bird
could fly
通過多重繼承,一個子類就可以同時獲得多個父類的所有功能。
1.MixIn
一般來說,繼承的關系是主線單一繼承下來的,如:
Animal -> Bird -> Bat
但是如果要加入其它額外的屬性和方法,可以通過多重繼承來實作,這種方式稱為MixIn。
MixIn的目的就是給一個類增加多個功能,這樣,在設計類的時候,我們優先考慮通過多重繼承來組合多個MixIn的功能,而不是設計多層次的複雜的繼承關系。
2.Python自帶的很多庫也使用了MixIn。
舉個例子,Python自帶了TCPServer和UDPServer這兩類網絡服務,而要同時服務多個使用者就必須使用多程序或多線程模型,這兩種模型由ForkingMixIn和ThreadingMixIn提供。通過組合,我們就可以創造出合适的服務來。
2017/3/5
To improve is to change, to be perfect is to change often.