# coding:utf-8 # cls_name:此时接收的是People类 def singleton_object(cls_name): # 声明字典,将cls_name类及对象保存成键值对。 _isinstance = {} def wrapper(*args, **kwargs): # 创建cls_name类型的对象 if _isinstance.has_key(cls_name) == False: # 如果不存在cls_name键,则创建对象 _isinstance[cls_name] = cls_name(*args, **kwargs) # 如果存在cls_name键,直接返回对象 return _isinstance[cls_name] return wrapper @singleton_object class People(object): def __init__(self, name): self.name = name p1 = People('a') print('-----', p1.name) p2 = People('b') print('=====', p2.name) # 单例类装饰器,一般适合装饰;一些工具类,比如DBManager(),而数据模型类Student() 不适合使用单例类。
装饰器单例
最新推荐文章于 2023-05-23 09:21:28 发布