理解__new__() 與__init__() 之間的關係
Python 中的__new__() 與__init__()方法在類別實例的建立和初始化。 __new__() 在 __init__() 之前調用,負責透過為其分配記憶體來建構新的類別實例。另一方面,__init__() 用於初始化實例的屬性並執行任何必要的設定。
現在,讓我們更深入地探討為什麼 __init__() 總是在 __new__() 之後呼叫。 __new__() 旨在傳回正在建立的類別的新實例。 __new__() 建立實例後,將其傳遞給 __init__() 進行初始化。這種順序執行確保 __init__() 在成功建構實例後可以存取和修改實例的屬性。
在您提供的範例中,您可能想知道為什麼不對現有實例執行 __init__() (例如, a2 和 a3)。這是因為您已經在 __new__() 中實作了自訂邏輯,該邏輯會檢查 _dict 字典中是否存在現有實例,如果找到則傳回該實例。在這些情況下, __init__() 會被跳過,因為實例之前已經被建立和初始化。
要以不同的方式實現您想要的功能,您可以考慮使用標準工廠模式而不是修改 __new__()。工廠模式可讓您將物件的建立與其實作分開,從而在程式碼中提供更大的靈活性和可重用性。
以上是為什麼 Python 中 __init__() 總是在 __new__() 之後呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!