我想在 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)
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)
| 归档时间: |
|
| 查看次数: |
2290 次 |
| 最近记录: |