首頁 > 後端開發 > Python教學 > 為什麼 Python 中 __init__() 總是在 __new__() 之後呼叫?

為什麼 Python 中 __init__() 總是在 __new__() 之後呼叫?

Patricia Arquette
發布: 2024-12-18 01:56:09
原創
223 人瀏覽過

Why is __init__() Always Called After __new__() in Python?

理解__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中文網其他相關文章!

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