__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
posted on 2019-12-14 23:49  显示账号  阅读(144)  评论(0编辑  收藏  举报