理解__new__() 和__init__() 執行的順序
Python 的__new__() 和__init__() 方法在課堂上起著至關重要的作用實例化。 __new__() 建立類別的新實例,而 __init__() 初始化該實例。預期的執行順序是 __new__() 在 __init__() 之前呼叫。
但是,特定場景可能會改變此順序。實作自訂 __new__() 方法時,可以操縱實例建立並傳回現有實例而不是建立新實例。此行為用於實現像享元設計模式這樣的模式。
在這種情況下,您可能會觀察到 __init__() 在 __new__() 之後被調用,即使這是意外的。 __init__() 總是在 __new__() 之後調用,除非自訂 __new__() 傳回現有物件。
要解決此問題,請考慮以更傳統的方式實現所需的功能,例如使用工廠函數。或者,您可以在自訂 __new__() 方法中包含初始化程式碼。然而,這種方法可能被認為是“hacky”,不建議作為最佳實踐。
以上是Python 類別實例化中何時`__init__()`不遵循`__new__()`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!