首頁 >後端開發 >Python教學 >如何在多重繼承中正確呼叫父類別 __init__` 方法?

如何在多重繼承中正確呼叫父類別 __init__` 方法?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-01 05:36:10445瀏覽

How Do I Properly Call Parent Class `__init__` Methods in Multiple Inheritance?

透過多重繼承呼叫父類別init

在使用多重繼承的場景中,確保呼叫所有父類別構造函數。兩種常見的方法有:

  • ParentClass.__init__(self)(舊式)
  • super(DerivedClass, self).__it__() (較新風格)

但是,如果父類不遵循一致的約定,這些方法可能會失敗。

確定正確的方法

適當的方法取決於基類是否設計為多重繼承:

1。獨立基底類別

  • 不適合多重繼承。
  • 使用下列任一方法手動呼叫每個父建構子:

    • 沒有super: Foo.__init__(self), Bar.__init__ (self)
    • 與super: super().__init__() (對於Foo 之前的所有建構子),super(Foo, self).__init__(bar) (對於Foo 之後的所有建構子)

2. Mixins

  • 專為多重繼承而設計。
  • 在 mixin 類別中使用 super().__init__(),它會自動呼叫下一個建構子。
  • 先繼承 mixin,例如 class FooBar(FooMixin,吧)。

3。為協作繼承而設計的類別

  • 與 mixin 類似,但所有參數都作為關鍵字參數傳遞。
  • 在所有類別中呼叫 super().__init__()。
  • 基類的順序不

其他注意事項

  • 對於物件子類,避免調用super().__init__ ()。
  • 對於獨立類,如果直接從物件繼承,則總是提供一個空建構函式(例如,class Base(object): def __init__(self): pass)。

最終,正確的實作取決於所涉及的類別。如果一個類別是為多重繼承而設計的,則應該相應地記錄它。否則,假設它不是為此類場景設計的。

以上是如何在多重繼承中正確呼叫父類別 __init__` 方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn