在多重繼承中呼叫父類別建構子:正確的方法
理解問題
在多重繼承中,多個父類貢獻它們的屬性和方法去兒童班。為了正確初始化子類,需要呼叫所有父類的建構子。然而,選擇正確的方法來執行此操作可能具有挑戰性,特別是當父類別具有不同的約定時。
方法和注意事項
呼叫父類別建構子有兩種典型的方法:
-
舊式: 呼叫ParentClass.__init__( self)
-
較新風格:使用super(DerivedClass, self).__init__().
選擇取決於父類別是否是為多重繼承。
場景和過程
-
不相關的基類:如果父類是獨立的並且不是為多重繼承而設計的,則必須使用上述方法之一手動呼叫每個構造函數。
-
一個父類別作為 Mixin:如果一個父類別被設計為 mixin(用於多重繼承),它將呼叫自動下一個建構子。在這種情況下,在子類別中僅使用 super().__init__() ,它將呼叫所有建構子(從 mixin 開始)。
-
協作基底類別: 如果所有父類別專為協作繼承而設計,它們將未使用的參數傳遞給後續建構子。這裡再次強調,在子類別中使用 super().__init__() 來呼叫所有建構子。
推斷建議
- 如果可能,請確保父類遵循相同的約定。
- 如果使用單獨的父類,請使用不含 super 的明確建構子呼叫。
- 如果使用mixin 或協作類,請使用 super 並具有正確的繼承順序(mixin 第一個或所有參數作為關鍵字參數)。
結論
選擇在多重繼承中呼叫父類別建構子的正確方法取決於父類別的設計。透過了解這些場景和過程,您可以確保正確的初始化並避免常見的陷阱。
以上是多重繼承中應該如何呼叫父類別的建構子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!