python中的__new__概念(工厂
__new__方法實際上在__init__方法之前執行,用于創建類的實例。然而__init__方法負責實例創建后對其進行自定義,__new__方法才是實際上創建并返回實例的方法。
__new__方法的第一個也是最重要的參數是創建實例所需的要的類(按照慣例,命名為cls)。
在大多數起概況下,__new__方法的其他參數會被完整復制到__init__方法中。參數在調用類構造函數時首先會被傳遞給__new__方法,然后再傳遞給__init__方法。
在實際應用中,大多數類無需定義__new__方法。該方法在python中的內置實現已經足夠。
通常,我們希望__new__方法返回一個已經被初始化后的類的實例。在某些情況下,并不需要這么做。需要注意的是,只有在通過__new__方法返回當前類的實例時才會執行__init__方法。如果返回的不是當前類的實例,就不會調用__init__方法。
?
| class MyClass(object): ??? def __new__(cls,a): ??????? print("__new__? 被調用,參數為:%d"%a) ??????? #在實現__new__方法的時候,應該首先調用父類的__new__方法 ??????? #然后再開始自定義的邏輯 ??????? #調用父類__new__方法創建實例,并返回 ??????? return object.__new__(cls) ? ??? def __init__(self,a): ??????? print("__init__ 被調用,參數為:%d"%a) ? ? #解釋器先將參數100傳遞給__new__方法 #如果__new__方法創建對象,那么會調用__init__方法 #這時會將參數100再傳遞給__init__方法 mclass = MyClass(100) |
?
總結
|
總結
以上是生活随笔為你收集整理的python中的__new__概念(工厂的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sklearn分类器性能评估
- 下一篇: websocket python爬虫_p