__new__ : 控制对象的实例化过程 , 在__init__方法之前调用
__init__ : 对象实例化对象进行属性设置
class User: def __new__(cls, *args, **kwargs): """控制对象的创建的过程,在__init__方法之前调用""" print('invoke __new__') return super().__new__(cls) # 需要返回cls, 不然是不会调用__init__方法 def __init__(self, name): """控制对象的属性操作,在调用该方法时,对象已经初始化完成,只是属性还没完善""" print('invoke __init__') self.name = name if __name__ == '__main__': user = User('admin')
打印结果:
C:\Users\zhengqinfeng\AppData\Local\Programs\Python\Python37\python.exe E:/ws/python/LearnFlask/test/mooic/new_init.py invoke __new__ invoke __init__ Process finished with exit code 0
日拱一卒无有尽,功不唐捐终入海