__new__与__init__的区别

Posted z-qinfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__new__与__init__的区别相关的知识,希望对你有一定的参考价值。

__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:UserszhengqinfengAppDataLocalProgramsPythonPython37python.exe E:/ws/python/LearnFlask/test/mooic/new_init.py
invoke __new__
invoke __init__

Process finished with exit code 0

以上是关于__new__与__init__的区别的主要内容,如果未能解决你的问题,请参考以下文章

关于__new__和__init__的关系与区别

Python基础 __init__与__new__区别

_new_()与_init_()的区别

_new_()与_init_()的区别

python中的__init__和__new__的区别

Python(和 Python C API):__new__ 与 __init__