1.单例模式要点
- 某个类只有一个实例;
- 类必须自行创建实例
- 必须自行向系统提供这个实例
2.实现单例模式方法
- 使用模块
- 使用__new__
- 使用装饰器(decorator)
- 使用元类(metaclass)
3.模块
一:将类保存到test1.py文件中
#test1.py
class Opt(object):
def foo(self):
print("hello")
my_opt = Opt()
二:获取一个单例对象
from .test1 import my_opt
my_opt.foo()
4.使用__new__
说明:__init__和__new__的区别,__init__是类实例初始化的时候调用的,__new__是类创建实例的时候调用的,故而可以使用__new__来创建单例模式。
class Singleton(object):
def __new__(cls,*args,**kwargs):
if not hasattr(cls, '_instance'):
cls._instance = Super(Singleton,cls).__new__(cls,*args,**kwargs)
return cls._instance