python - 单例模式
一.使用__new__创建单例对象
# 基于__new__模式 class Settings(object): _instance = None def __new__(cls, *args, **kwargs): # _instance为空则创建对象,再次实例化时将第一次创建的对象返回,这里就形成的单例模式 if not cls._instance: cls._instance = super(Settings, cls).__new__(cls, *args, **kwargs) return cls._instance s1 = Settings() s2 = Settings() print(s1 == s2) print(id(s1)) print(id(s2))
二.基于python模块化的单例模式
由于python模块导入有一个特性,就是当模块对象导入一次以后就会生成pyc文件,pyc文件中存储这些模块信息,下次再次导入则是从pyc中取,不会再次生成对象,这样也就保证了模块导入的对象,在使用时只会生成一个对象,也就是单例模式了。