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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python 中__new__()和__init__()的区别

發(fā)布時間:2025/4/16 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 中__new__()和__init__()的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自: https://blog.csdn.net/weixin_37579123/article/details/89515577

__new__方法:類級別的方法

特性: 1.是在類準(zhǔn)備將自身實例化時調(diào)用,并且至少需要傳遞一個參數(shù)cls,此參數(shù)在實例化時由python解釋器自動提供;2.始終是類的靜態(tài)方法,即使沒有被加上靜態(tài)方法裝飾器;3.必須要有返回值,返回實例化出來的實例;在自己實現(xiàn)__new__()時需要注意:可以return父類(通過super(當(dāng)前類名,cls)).__new__出來的實例, 或者直接是object的__new__出來的實例class A(object):passa=A() # 默認(rèn)調(diào)用父類object的__new__()方法來構(gòu)造該類的實例 print (a) # 返回的是<__main__.A object at 0x0000024352732630> class A(object):def __new__(cls):"重寫__new__方法"return "abc"a=A() print (a) # 'abc',實例化對象取決于__new__方法,__new__返回什么就是什么 print (type(a)) # <class 'str'> 通過__new__()方法實現(xiàn)單例class Singleton(object):def __new__(cls,*args,**kwargs):if not hasattr(cls,"_instance"):cls._instance=super(Singleton,cls).__new__(cls)return cls._instancea=Singleton() b=Singleton() c=Singleton() print (a) print (b) print (c)輸出結(jié)果: <__main__.Singleton object at 0x000002474C92D550> <__main__.Singleton object at 0x000002474C92D550> <__main__.Singleton object at 0x000002474C92D550>

__init__方法:實例級別的方法

特性: 1.有一個參數(shù)self,該self參數(shù)就是__new__()返回的實例;2.__init__()在__new()的基礎(chǔ)上完成初始化動作,不需要返回值;3.若__new__()沒有正確返回當(dāng)前類cls的實例,那__init__()將不會被調(diào)用4.創(chuàng)建的每個實例都有自己的屬性,方便類中的實例方法調(diào)用;對比下面代碼理解會更加清晰:class B():def __new__(cls):print ("__new__方法被執(zhí)行")def __init__(self):print ("__init__方法被執(zhí)行")b=B() 結(jié)果: __new__方法被執(zhí)行 class B():def __new__(cls):print ("__new__方法被執(zhí)行")return super(B,cls).__new__(cls)def __init__(self):print ("__init__方法被執(zhí)行")b=B() 結(jié)果: __new__方法被執(zhí)行 __init__方法被執(zhí)行

轉(zhuǎn)載于:https://www.cnblogs.com/nyist-xsk/p/11227508.html

總結(jié)

以上是生活随笔為你收集整理的Python 中__new__()和__init__()的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。