為什麼 __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__ 函式稱為建構函式或初始化器,並且在建立類的例項時自動呼叫它。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP