Python系統學習第十二課
阿新 • • 發佈:2019-01-04
單繼承和多繼承
- 單繼承:每個類只能允許繼承一個類
- 多繼承:每個類允許繼承多個類
單繼承優缺點
- 傳承有序邏輯清楚語法清晰語法簡單隱患少
- 功能不能無限擴充套件,只能在當前唯一的繼承鏈中擴充套件
多繼承
- 優點:類的功能擴充套件方便
- 缺點:繼承關係混亂
class Fish():
def __init__(self, name):
self.name = name
def swim(self):
print("i am swimng")
class Bird():
def __init__(self, name):
self.name = name
def fly(self):
print("i am flying")
class Person():
def __init__(self, name):
self.name = name
def worked(self):
print("working...")
class Superman(Person, Bird, Fish):
pass
s = Superman( "lizi")
s.fly()
s.swim()
i am flying
i am swimng
菱形繼承和鑽石繼承
- 繼承圖顯示為一個菱形
- 會帶來繼承混亂的問題
- 關於多繼承的MRO
- MRO就是多繼承中,用於儲存繼承順序的一個列表
- python本身採用C3演算法,來對多繼承進行計算的結果
- MRO列表計算原則
- 子類永遠在父類前面
- 如果多個父類,根據引數順序進行存放
- 如果多個類繼承同一個父類,孫子類中只會選取繼承語法括號中第一個父類的父類
#建構函式一定要有,如果沒有會按照MRP順序向上找父類的建構函式,直到找到位置
多型
- 就是同一個物件在不同情況下有不同的狀態出現
- 多型不是語法,是一種設計思想。
- 多型性,一種呼叫方式,不同的執行效果
MIxin設計模式
- 主要採用多繼承方式對類的功能進行擴充套件
- 不改變物種,只改變功能。