1. 程式人生 > >Python-菱形繼承問題

Python-菱形繼承問題

本來多重繼承的時候,經典類(不繼承object類)會執行深度優先搜尋,會從最左邊繼承的父類一直繼承下去,直到繼承最後一個類後會從自身右邊的父類開始繼續繼承;新式類(繼承object類)會執行廣度優先搜尋,會從最左邊繼承的父類一直繼承下去,在最後一個類之前停下來,之後又從自身第二個父類開始,最後繼承最後一個類. 而菱形繼承,會導致兩者都會把最後一個類繼承兩次,即繼承第一個父類的時候會繼承最後一個父類;繼承自身右邊父類的時候也會再一次繼承那最後一個父類. A(B,C) B(D) C(D) --> 會導致D被繼承(引用)兩次