单例模式在Python中的实现
正如agf出色地回答的那样,Python中单例的可能实现可以使用以下元类:单例模式在Python中的实现,python,singleton,Python,Singleton,正如agf出色地回答的那样,Python中单例的可能实现可以使用以下元类: class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) r
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
但是,我不理解
\u instance
的用法。我知道这是一个dict,用于存储按类索引的实例。但是,它被声明为类属性(\u instances={}
),并用作cls
(如果cls不在cls中,。\u instances:
)。这两者怎么可能是一样的呢?难道不应该用@classmethod
来修饰def\uuuu call\uuuu(…)
吗?好吧,如果你用@classmethod
来修饰\uu call\uuuuuu
的话,一个cls
属性就是一个类属性,正如参数名所建议的那样。