Python只调用__init __()方法一次

İlk*_*ğlı 2 python init

有没有办法只调用一次类的init()方法.或者,当我从类创建对象时,如何禁用init()的调用?

Mat*_*son 7

如果你想要一个单例,那里只有一个类的实例,那么你可以创建一个像PEP18那样得到的装饰器:

def singleton(cls):
    instances = {}
    def getinstance():
        if cls not in instances:
            instances[cls] = cls()
        return instances[cls]
    return getinstance

@singleton
class MyClass:
    pass
Run Code Online (Sandbox Code Playgroud)

试试看:

>>> a = MyClass()
>>> b = MyClass()
>>> a == b
True
Run Code Online (Sandbox Code Playgroud)