个人理解:
1、__new__在__init__之前调用,初始化对象,再将这个对象返回给__init__初始化实例
2、__new__返回的必须是父类的__new__生成的对象。如果是其他类,则不会执行__init__,如果是自己类,则会递归报错。
测试代码:
class B(object):
def __new__(cls, *args, **kwargs):
print('__new__')
return super().__new__(cls,*args,**kwargs)
def __init__(self):
print('__init__')
if __name__=='__main__':
b = B()
输出为:
__new__
__init__