首先,沒有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