python单例模式

python单例模式

什么是单例模式?

答:永远用一个对象的实例叫做单例模式

什么时候用单例模式?

答:创建的对象与对象之间内部封装的值是一样的,这时我们使用单例模式

这是比较原始的方式创建单例模式

 1 #单例模式------low的方法创建单例模式
 2 class Foo(object):
 3 
 4     #静态变量:只属于类,只能被类调用
 5     incetiance = None
 6 
 7     def __init__(self):
 8         #一个局部变量
 9         self.name = "li"
10 
11     #静态方法
12     @classmethod
13     def get_incetiance(cls):
14         if Foo.incetiance :
15             return Foo.incetiance
16         else:
17             Foo.incetiance = Foo()
18             return Foo.incetiance
19 
20 obj1 = Foo.get_incetiance()
21 obj2 = Foo.get_incetiance()
22 print(id(obj1),id(obj2))
23 
24 #输出结果是一样的
25 # 35321616 35321616

用高大上方法创建单例模式

 1 #单例模式---符合用户使用习惯的方法创建单例模式
 2 class Foo(object):
 3 
 4     #静态变量:只属于类,只能被类调用
 5     incetiance = None
 6 
 7     def __init__(self):
 8         #一个局部变量
 9         self.name = "li"
10 
11     #__new__方法在类中首先执行的方法,执行顺序在__init__方法之前
12     def __new__(cls, *args, **kwargs):
13         if Foo.incetiance:
14             return Foo.incetiance
15         else:
16             Foo.incetiance = object.__new__(cls, *args, **kwargs)
17             return Foo.incetiance
18 
19 obj1 = Foo()
20 obj2 = Foo()
21 print(id(obj1),id(obj2))
22 
23 #输出结果  35452688 35452688
原文地址:https://www.cnblogs.com/weijiazheng/p/10502987.html