我想在Python中使用类似“静态类属性”的单例类。我阅读了Python单例中存在的几个帖子,除了使用简单模块作为单例之外,找不到解决方案。
有没有办法扩展此代码(PEP318)以将其与“静态类属性”一起使用,我可以从函数中访问它?
def singleton(cls):
instances = {}
def getinstance():
if cls not in instances:
instances[cls] = cls()
return instances[cls]
return getinstance
@singleton
class MyClass:
...
答案 0 :(得分:4)
如果你想要一个只有一个实例的对象,为什么还要麻烦甚至实例化什么呢?做一些像......
class MyCounter(object):
count = 0
@classmethod
def inc(cls, delta=1):
cls.count += delta
>>> MyCounter.count
0
>>> MyCounter.inc()
>>> MyCounter.count
1
>>> MyCounter.inc(5)
>>> MyCounter.count
6