python单例实现方法之装饰器实现。
通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
#coding:utf-8 ''' 单例实现之装饰器实现''' def singleton(cls, *args, **kwargs): instance = {} def _singleton(): if cls not in instance: instance[cls] = cls(*args, **kwargs) return instance[cls] return _singleton @singleton def MyClass(): a = 1 def __init__(self, x=0): self.x = x a = MyClass() b = MyClass() a.a = 3 print b.a #3 a is b #True
装饰器实现的单例每次返回子函数及子函数所处的环境和环境变量,判断了cls True or False,所以会延续上次的result.
所谓单例就是一个类只能创建一个实例化。
- 某个类只能有一个实例
- 它必须自行创建这个实例
- 必须自行向整个系统提供这个实例