单例模式

Posted 隔壁古二蛋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式相关的知识,希望对你有一定的参考价值。

程序运行期间此类只有一个实例存在,可以通过__new__创建实例时来做限制

 1 class Singleton(object):
 2     def __new__(cls, *args, **kwargs):
 3 #如果使用__new__创建类实例时,类中没有instance属性,则认为此类还没有创建过实例,
 4 #通过调用父类的__new__方法,super(Singleton, cls).__new__(cls)来创建实例
 5 #super(Singleton, cls).__new__(cls)等价于object.__new__(cls)
 6 #并把创建的实例,赋值给类属性instance
 7 #下次在创建实例时,发现类中包含类属性instance,则直接返回类属性instance
 8 #类属性instance的值为上次创建的实例
 9         if not hasattr(cls,"instance"):
10             cls.instance = super(Singleton, cls).__new__(cls)
11         return cls.instance
12 
13 s1 = Singleton()
14 s2 = Singleton()
15 print(s1 is s2)
16 #True

 

以上是关于单例模式的主要内容,如果未能解决你的问题,请参考以下文章

常用代码片段

性能比较好的单例写法

片段作为 Android 中的单例

单例片段或保存网页视图状态

你熟悉的设计模式都有哪些?写出单例模式的实现代码

单例模式以及静态代码块