python中的 __inti__ 和 __new__ 方法的区别
这个要从Python的面向对象实例化的过程说起
类名() 之后,开辟一块内存空间,然后调用__init__把空间的内存地址作为self的参数传递到函数的内部,所有和self有关的参数,属性都会和self关联起来,执行__init__之后,self就会自动返回到调用出
class A: def __new__(cls, *args, **kwargs): o = object.__new__(cls) print('执行了new',o) return o def __init__(self): print('执行init',self) A() # 实例化的时候 # 先创建一块对象的空间,有一个指针能指向类 --> __new__ # 调用init --> __init__
执行结果
执行了new <__main__.A object at 0x0000000001D927F0> 执行init <__main__.A object at 0x0000000001D927F0>
所以__new__是在__init__之前执行,
__new__ 是在对象创建之前创建一个对象,并将该对象返回给init。在创建类对象时调用
__init__ 在对象创建后,对对象进行初始化。在实例化时调用
xxx就是我的个性签名