首頁>技術>

在講多繼承之前,先複習一下單繼承的查詢順序,你覺得輸出結果會是什麼?這裡的self是誰?為什麼?

請看下圖:

一、什麼是多繼承的“菱形問題”

“菱形”問題指的是一個子類繼承了多個父類,最終匯聚到一個非object。

假設有一個子類A,分別繼承了父類B和C,而這兩個父類同時都繼承了祖父類D;那麼子類A沒有的變數是先去父類B中查詢還是去父類C中查詢?

因為這種繼承示意圖很像一個菱形,所以被稱為多繼承的“菱形問題”。

出現“菱形”繼承問題,Python直譯器是遵循深度優先原則還是遵循廣度優先原則查詢呢?

所謂深度優先與廣度優先是一種演算法思想;

深度優先執行的是“一”字程式,先把同級別的類都訪問一遍; 廣度優先執行的“1”字程式,先訪問第1個父類,沒有則訪問當前父類的父類(祖父類),沒有再延伸下去,直到這個支上沒有類;再去訪問第2個父類;

15
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 資料庫連結池終於搞對了,這次直接從100ms最佳化到3ms