Python单例再次/如何使用类属性?

时间:2013-04-18 11:35:28

标签: python

我想在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:
    ...

1 个答案:

答案 0 :(得分:4)

TBH,我总是发现单身人士是一个反模式。

如果你想要一个只有一个实例的对象,为什么还要麻烦甚至实例化什么呢?做一些像......

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