Python-__new__与__init__代码笔记(自用)

首先,没有return时

class User:
    def __new__(cls, *args, **kwargs):
        print ("I am in new ")
        return super().__new__(cls)
    def __init__(self, name):
        print ("I am in init")
        pass
a = int()
#new 是用来控制对象的生成过程, 在对象生成之前
#init是用来完善对象的
if __name__ == "__main__":
    user = User(name="aaa")
结果:
 in new 

因此,果new方法不返回对象, 则不会调用init函数

class User:
    def __new__(cls, *args, **kwargs):
        print (" in new ")
        print(cls)
        return super().__new__(cls)
    def __init__(self, name):
        print (" in init")
        print(name)
a = int()
#new 是用来控制对象的生成过程, 在对象生成之前
#init是用来完善对象的
#如果new方法不返回对象, 则不会调用init函数
if __name__ == "__main__":
    user = User(name="aaa")
结果:
 in new 
<class '__main__.User'>
 in init
 aaa

你可能感兴趣的:(#,Python高级核心技术)