8-4 __new__和__init__

class User:
    def __new__(cls, *args, **kwargs):
        print("in new ")
        return super().__new__(cls)

    def __init__(self,name):
        print("in init ")
        self.name  = name

user = User("zhou")
print(user.name)
in new 
in init 
zhou

new 是用来控制实例对象的生成过程, 在对象生成之前

init是用来完善对象的

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

你可能感兴趣的:(8-4 __new__和__init__)