好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Python中__new__和__init__的區別與聯系

Python中__new__和__init__的區別與聯系

熱門標簽:蘇州電銷機器人十大排行榜 江蘇房產電銷機器人廠家 悟空智電銷機器人6 溫州旅游地圖標注 幫人做地圖標注收費算詐騙嗎 外呼不封號系統 電信營業廳400電話申請 遼寧400電話辦理多少錢 荊州云電銷機器人供應商

__new__ 和 __init__ 的區別主要表現在:

__new__ 負責對象的創建而 __init__ 負責對象的初始化。

__new__:創建對象時調用,會返回當前對象的一個實例

__init__:創建完對象后調用,對當前對象的一些實例初始化,無返回值

1. 在類中,如果__new__和__init__同時存在,會優先調用__new__

class ClsTest(object):    def __init__(self):        print("init")    def __new__(cls,*args, **kwargs):        print("new")ClsTest()

輸出:

new

2. 如果__new__返回一個對象的實例,會隱式調用__init__

代碼實例:

class ClsTest(object):    def __init__(self):        print ("init")    def __new__(cls,*args, **kwargs):        print ("new %s"%cls)        return object.__new__(cls, *args, **kwargs)ClsTest()

輸出:

new class '__main__.ClsTest'>init

3. __new__方法會返回所構造的對象,__init__則不會。__init__無返回值。

class ClsTest(object):     def __init__(cls):             cls.x = 2             print ("init")             return clsClsTest()

輸出:

initTraceback (most recent call last):  File "stdin>", line 1, in module>TypeError: __init__() should return None, not 'ClsTest'

4. 若__new__沒有正確返回當前類cls的實例,那__init__是不會被調用的,即使是父類的實例也不行

class ClsTest1(object):    passclass ClsTest2(ClsTest1):    def __init__(self):        print ("init")    def __new__(cls,*args, **kwargs):        print ("new %s"%cls)        return object.__new__(ClsTest1, *args, **kwargs)b=ClsTest2()print (type(b))

 輸出:

new class '__main__.ClsTest2'>

class '__main__.ClsTest1'>

知識點:

1. 繼承自object的新式類才有__new__

2. __new__至少要有一個參數cls,代表要實例化的類,此參數在實例化時由Python解釋器自動提供,__new__必須要有返回值,返回實例化出來的實例,可以return父類__new__出來的實例,或者直接是object的__new__出來的實例

3. __init__有一個參數self,就是這個__new__返回的實例,__init__在__new__的基礎上可以完成一些其它初始化的動作,__init__不需要返回值

4. 如果__new__返回一個對象的實例,會隱式調用__init__

更多關于Python中__new__和__init__的區別與聯系的介紹請查看下面的相關鏈接

您可能感興趣的文章:
  • Python函數__new__及__init__作用及區別解析
  • 深入理解Python中的 __new__ 和 __init__及區別介紹
  • 淺談python中的__init__、__new__和__call__方法
  • 詳解Python中的__new__、__init__、__call__三個特殊方法
  • Python中__new__與__init__方法的區別詳解
  • Python中的__new__與__init__魔術方法理解筆記
  • Python中__init__和__new__的區別詳解
  • python中的__init__ 、__new__、__call__小結
  • 詳解Python中的__init__和__new__

標簽:三沙 欽州 宿遷 濟南 喀什 景德鎮 黃山 臺灣

巨人網絡通訊聲明:本文標題《Python中__new__和__init__的區別與聯系》,本文關鍵詞  Python,中,new,和,init,的,區別,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python中__new__和__init__的區別與聯系》相關的同類信息!
  • 本頁收集關于Python中__new__和__init__的區別與聯系的相關信息資訊供網民參考!
  • 推薦文章