1. 程式人生 > >Python系統學習第十二課

Python系統學習第十二課

單繼承和多繼承

  • 單繼承:每個類只能允許繼承一個類
  • 多繼承:每個類允許繼承多個類

單繼承優缺點

  • 傳承有序邏輯清楚語法清晰語法簡單隱患少
  • 功能不能無限擴充套件,只能在當前唯一的繼承鏈中擴充套件

多繼承

  • 優點:類的功能擴充套件方便
  • 缺點:繼承關係混亂
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設計模式

  • 主要採用多繼承方式對類的功能進行擴充套件
  • 不改變物種,只改變功能。