0

我想在 Python 中有一个带有 Java 的单例类,比如“静态类属性”。我阅读了关于 Python 单例的几篇文章,除了使用简单的模块作为单例之外找不到解决方案。

有没有办法扩展此代码(PEP318)以将其与我可以从函数访问的“静态类属性”一起使用?

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

@singleton
class MyClass:
    ...
4

1 回答 1

7

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
于 2013-04-18T13:21:16.290 回答