Python实现单例模式有两种方法:一种是通过静态变量方法实现单例模式;另一种是通过装饰器实现单例模式。具体实现代码如下:
#方法一:静态变量方法实现单例模式。
#1.构造方法私有类(确保外部类不可以通过new关键字创建对象)
#2。静态类类型的私有成员变量(私有化是保证不能被外部类访问,静态类型是确保实例化类后的唯一性)
#3. 公有的静态访问方法(向整个系统提供访问该实例的方法)
#通过以上几点来保证实例的唯一性
class Singleton(object):
instance=None
def __new__(cls,*args,**kwargs):
if not cls.instance:
cls.instance=object.__new__(cls)
return cls.instance
def __init__(self):
pass
a=Singleton()
b=Singleton()
print(id(a)==id(b))
#方法二:装饰器实现单例模式。通过将不可变的类地址存放在dict中,值为那个唯一的实例,来保证实例的唯一性。
def Singleton(cls):
instance={}
def inner(*args,**kwargs):
if cls not in instance:
instance[cls]=cls()
return instance[cls]
return inner
@Singleton
class A(object):
pass
cls1=A()
cls2=A()
print(cls1 is cls2)
标签:__,Singleton,Python,模式,instance,单例,def,cls
From: https://blog.51cto.com/u_15944471/6065536