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

use*_*284 0 python

我想在 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:
    ...
Run Code Online (Sandbox Code Playgroud)

Aya*_*Aya 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
Run Code Online (Sandbox Code Playgroud)