在python中,我们可以用多种方法来实现单例模式:
- 使用模块
- 使用__new__
- 使用装饰器
- 使用元类(metaclass)
1.使用模块
# mysingle.py
class MySingle:
def foo(self):
pass
sinleton = MySingle()
将上面的代码保存在文件mysingle.py中,然后这样使用:
from mysingle import sinleton
singleton.foo()
2. 使用 __new__
class Singleton(object):
def __new__(cls):
# 关键在于这,每一次实例化的时候,我们都只会返回这同一个instance对象
if not hasattr(cls, 'instance'):
cls.instance = super(Singleton, cls).__new__(cls)
return cls.instance
obj1 = Singleton()
obj2 = Si