python 单例装饰器
Python中单例模式的实现方法有多种,但在这些方法中属装饰器版本用的广,因为装饰器是基于面向切面编程思想来实现的,具有很高的解耦性和灵活性。 单例模式定义:具有该模式的类只能生成一个实例对象。 def singlecls(cls, *args,**kwargs): instace = {} def get_instance(cls, *args, **kwargs): if cls not in instace: instances[cls] = cls(*args, **kwargs) return instance[cls] return get_instace @singlecls class A(object): def __init__(self): pass A = singlecls(A) 在创建实例对象时会先将 A 作为参数传入到 singlecls 函数中,函数在执行过程中不会执行 get_instance 函数(函数只有调用才会执行),直接返回get_instance函数名。 此时可以看作 A = get_instance,创建实例时相当于 a= get_instance(),调用get_instance 函数,先判断实例是否在字典中,如果在直接从字典中获取并返回, 如果不在执行 instances