为什么在__new __()之后总是调用__init __()?
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__函数称为构造函数或初始化程序,在创建类的新实例时会自动调用该函数。
热门推荐
10 公司开年仪式祝福语简短
11 祝老婆生日祝福语简短
12 新疆新年祝福语大全简短
13 浪漫的生日祝福语简短
14 上班收到花束祝福语简短
15 年前幸福祝福语大全简短
16 5岁宝宝祝福语简短
17 外婆祝福语短句唯美简短
18 生日祝福语大全女孩简短