日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中的__new__概念(工厂

發布時間:2024/7/5 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)

?

總結

    • __new__至少要有一個參數cls,代表要實例化的類,此參數在實例化時由Python解釋器自動提供;
    • __new__必須要有返回值,返回實例化出來的實例,這點在自己實現__new__時要特別注意,可以return父類__new__出來的實例,或者直接是object的__new__出來的實例;
    • __init__有一個參數self,就是這個__new__返回的實例,__init__在__new__的基礎上可以完成一些其它初始化的動作,__init__不需要返回值;
    • 我們可以將類比作制造商,__new__方法就是前期的原材料購買環節,__init__方法就是在有原材料的基礎上,加工,初始化商品環節。

總結

以上是生活随笔為你收集整理的python中的__new__概念(工厂的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。