在講多繼承之前,先複習一下單繼承的查詢順序,你覺得輸出結果會是什麼?這裡的self是誰?為什麼?
請看下圖:
一、什麼是多繼承的“菱形問題”“菱形”問題指的是一個子類繼承了多個父類,最終匯聚到一個非object。
假設有一個子類A,分別繼承了父類B和C,而這兩個父類同時都繼承了祖父類D;那麼子類A沒有的變數是先去父類B中查詢還是去父類C中查詢?
因為這種繼承示意圖很像一個菱形,所以被稱為多繼承的“菱形問題”。
出現“菱形”繼承問題,Python直譯器是遵循深度優先原則還是遵循廣度優先原則查詢呢?
所謂深度優先與廣度優先是一種演算法思想;
深度優先執行的是“一”字程式,先把同級別的類都訪問一遍; 廣度優先執行的“1”字程式,先訪問第1個父類,沒有則訪問當前父類的父類(祖父類),沒有再延伸下去,直到這個支上沒有類;再去訪問第2個父類;
最新評論