首頁 > 後端開發 > Python教學 > Python 類別實例化中何時`__init__()`不遵循`__new__()`?

Python 類別實例化中何時`__init__()`不遵循`__new__()`?

Mary-Kate Olsen
發布: 2024-12-14 14:35:15
原創
772 人瀏覽過

When Does `__init__()` Not Follow `__new__()` in Python Class Instantiation?

理解__new__() 和__init__() 執行的順序

Python 的__new__() 和__init__() 方法在課堂上起著至關重要的作用實例化。 __new__() 建立類別的新實例,而 __init__() 初始化該實例。預期的執行順序是 __new__() 在 __init__() 之前呼叫。

但是,特定場景可能會改變此順序。實作自訂 __new__() 方法時,可以操縱實例建立並傳回現有實例而不是建立新實例。此行為用於實現像享元設計模式這樣的模式。

在這種情況下,您可能會觀察到 __init__() 在 __new__() 之後被調用,即使這是意外的。 __init__() 總是在 __new__() 之後調用,除非自訂 __new__() 傳回現有物件。

要解決此問題,請考慮以更傳統的方式實現所需的功能,例如使用工廠函數。或者,您可以在自訂 __new__() 方法中包含初始化程式碼。然而,這種方法可能被認為是“hacky”,不建議作為最佳實踐。

以上是Python 類別實例化中何時`__init__()`不遵循`__new__()`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板