為什麼 __init__() 總是先於 __new__() 在 Python 中被呼叫?


Python 擁有特殊型別的方法,稱為魔術方法,名稱帶下劃線且下劃線連在一起。

如果我們想討論魔術方法 __new__,那麼顯然需要也討論 __init__ 方法。當例項被建立時,將呼叫魔術方法 __new__,而當建立例項時,將呼叫 __init__ 方法來初始化例項。

示例

 即時演示

class X():
_dict = dict()

def __new__(self):
if 'data' in X._dict:
print ("new instance Exists")
return X._dict['data']
else:
print ("magic method New")
return super(X, self).__new__(self)

def __init__(self):
print ("instantiation")
X._dict['data'] = self
print ("")

a1 = X()
a2 = X()
a3 = X()

輸出

magic method New
instantiation

new instance Exists
instantiation

new instance Exists
instantiation

要記住的重要事項:__init__ 函式稱為建構函式或初始化器,並且在建立類的例項時自動呼叫它。

更新日期: 2019-07-30

253 次瀏覽

開啟你的職業生涯

透過完成課程來獲得認證

開始
廣告
© . All rights reserved.