首先,没有return时
class User:
def __new__(cls, *args, **kwargs):
print ("I am in new ")
return super().__new__(cls)
def __init__(self, name):
print ("I am in init")
pass
a = int()
#new 是用来控制对象的生成过程, 在对象生成之前
#init是用来完善对象的
if __name__ == "__main__":
user = User(name="aaa")
结果:
in new
因此,果new方法不返回对象, 则不会调用init函数
class User:
def __new__(cls, *args, **kwargs):
print (" in new ")
print(cls)
return super().__new__(cls)
def __init__(self, name):
print (" in init")
print(name)
a = int()
#new 是用来控制对象的生成过程, 在对象生成之前
#init是用来完善对象的
#如果new方法不返回对象, 则不会调用init函数
if __name__ == "__main__":
user = User(name="aaa")
结果:
in new
<class '__main__.User'>
in init
aaa