0
点赞
收藏
分享

微信扫一扫

Python实现单例模式

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)           
举报

相关推荐

0 条评论