Python3中的

mac2022-06-30  28

__new__方法是用来创建对象的,而__init__方法是用来初始化类对象的,因此__new__方法的会先于__init__方法执行。 __new__方法可以用来实现python中的单例设计模式,但是在Python3中,__new__方法的写法有所改变:

class User(object): __instance = None def __new__(cls, *args, **kwargs): if not cls.__instance: # python2中的旧写法为: # cls.__instance = super(User,cls).__new__(cls,*args,**kwargs) # 正确写法为: cls.__instance = super(User, cls).__new__(cls) return cls.__instance def __init__(self, name): self.name = name

如果仍然用python2的旧写法,程序会报错TypeError: object.__new__() takes no arguments

最新回复(0)