python实现单例模式的几种方式

特点:确保某一个类只有一个实例对象

  • 模块
    python的模块就是一个天然的单例模式。当模块第一次导入时会产生一个.pyc文件,当第二次用时,直接加载.pyc文件,不会再次执行该模块的代码。

  • 装饰器

def SingleTon(cls, *args, **kwargs):
    _instance = {}

    def singleton():
        if cls not in _instance:
            _instance[cls] = cls(*args, **kwargs)
        return _instance[cls]
    return singleton


@SingleTon
class A(object):
    a = 1


t1 = A()
print(id(t1))  # 915018585536
t2 = A()
print(id(t2))  # 915018585536
  • 类(基于__new__)
class SingleTon(object):
    _isinstance = None

    def __new__(cls, *args, **kwargs):
        if not cls._isinstance:
            cls._isinstance = super(SingleTon, cls).__new__(cls, *args, **kwargs)
        return cls._isinstance


t1 = SingleTon()
print(id(t1))  # 744789979936
t2 = SingleTon()
print(id(t2))  # 744789979936
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 3,226评论 2 9
  • 创建型模式 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设...
    隔墙送来秋千影阅读 2,838评论 0 11
  • 创建型模式 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设...
    liuyang7519阅读 425评论 0 2
  • 微博上有个小师傅说:"疯狂犹豫和寻求别人意见可能是因为自己不想承担选择的责任。 是的。 我就是不想承担风险,只想着...
    傲娇道姑阅读 289评论 0 0
  • 感恩天地万物滋养生命,感恩空气,水,食物滋养身体健康,感恩历代宗亲传承血脉,感恩父母养育之恩,感恩兄弟姐妹互帮互助...
    银菠萝蜜阅读 150评论 0 1

友情链接更多精彩内容