python单例模式

Python单例模式

  • 单例模式

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

  • 单利的三个特点

    1. 某个类只能有一个实例
    2. 它必须自行创建这个实例
    3. 必须自行向整个系统提供这个实例
  • python实现

python new()在init()之前被调用,用于生成实例对象。利用这个方法和类的属性的特点可以实现设计模式的单例模式。单例模式是指创建唯一对象,单例模式设计的类只能实例化1个对象。

  • 代码实现
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            

# 测试
if __name__ == '__main__':
    instance = Singleton()
    instance2 = Singleton()

    print(id(instance))
    print(id(instance2)) 

输出的结果

两个实例的id 是相同的

3070140940
3070140940

推荐阅读更多精彩内容

  • 本系列文章是希望将软件项目中最常见的设计模式用通俗易懂的语言来讲解清楚,并通过Python来实现,每个设计模式都是...
    geekpy阅读 15,053评论 7 36
  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    huohongsheng阅读 2,619评论 4 34
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 2,279评论 1 15
  • 用__new__实现 关于__new__的内部原理,请点击 为了让子类不继承父类的__new方法,子类也应该调用o...
    戏之地阅读 2,969评论 0 6
  • 单例模式,多次实例化只返回同一个类实例。
    虾想家阅读 43评论 0 0