class User:
def __new__(cls,*args,**kwargs): # __new__传入的是一个类,可以自定义类的生成过程。__new__在__init__之前,在
# __new__函数体内,并没有生成对象
print("in new") # 类的实现过程
# 此处并没有return user这个实例。导致__init__无法执行
def __init__(self,name): # __init__传入的是对象,是在__new__方法调用,生成了对象之后,
print("in init")
self.name = name # 此处为对对象所能做的事情
if __name__ == "__main__":
user = User(name="Tom") # 有参数的名称,会进入dict中
user = User("Tom") # 没有参数的名称,会进入tuple中
in new
in new
class User:
def __new__(cls,*args,**kwargs): # __new__传入的是一个类,可以自定义类的生成过程。__new__在__init__之前,在
# __new__函数体内,并没有生成对象
print("in new") # 类的实现过程
# 此处并没有return user这个实例。导致__init__无法执行
return super().__new__(cls)
def __init__(self,name): # __init__传入的是对象,是在__new__方法调用,生成了对象之后,
print("in init")
self.name = name # 此处为对对象所能做的事情
# new是用来控制对象的生成过程,在对象生成之前
# init是用来完善对象的
# 如果new方法不返回对象,则不会调用init方法
if __name__ == "__main__":
user = User(name="Tom") # 有参数的名称,会进入dict中
user = User("Tom") # 没有参数的名称,会进入tuple中
in new
in init
in new
in init