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