python装饰器实现单例模式

来源:互联网 发布:爸爸的网络用语是什么 编辑:程序博客网 时间:2024/05/22 06:54

基本思想为:

1、在装饰器中添加一个字典类型的自由变量_instance;

2、在闭包中判断类名是否存在于_instance中,如果不存在则创建一个类的事例,并讲其添加到字典中;如果存在则不进行实例化,直接返回字典中的实例;



def Singleton(cls):    _instance = {}    def _singleton(*args, **kargs):        if cls not in _instance:            _instance[cls] = cls(*args, **kargs)        return _instance[cls]    return _singleton@Singletonclass A(object):    a = 1    def __init__(self, x = 0):        self.x = xa1 = A(2)a2 = A(3)print id(a1)print id(a2)print a1.xprint a2.x'''----------------------------------------458385764583857622'''

1 0