使用装饰器的方式实现python的单例模式
def singleton(cls, *args, **kw):
instances = {}
def _singleton():
if cls not in instances:
instances[cls] = cls(*args, **kw)
return instances[cls]
return _singleton
@singleton
class MyClass(object):
......
说明:
模块在一个Python应用程序中只有一份,本身就是单例的,将所需要的属性和方法,直接暴露在模块中的全局变量和方法,也可以实现单例。
参见:Is there a simple, elegant way to define Singletons in Python? (Stack Overflow)