欢迎来到Louis的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

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中取,不会再次生成对象,这样也就保证了模块导入的对象,在使用时只会生成一个对象,也就是单例模式了。

posted on 2019-01-15 15:25  Louiszj  阅读(93)  评论(0编辑  收藏  举报

导航