python单例模式的三种实现方式
发布时间:2020-12-20 12:58:24 所属栏目:Python 来源:网络整理
导读:__new__特殊方法实现 class Singleton: def __new__(cls,*args,**kwargs): if not hasattr(cls,'_instance'): cls._instance = super(Singleton,cls).__new__(cls) return cls._instance def __init__(self,name): self.name = names1 = Singleton('first')s
class Singleton: def __new__(cls,*args,**kwargs): if not hasattr(cls,'_instance'): cls._instance = super(Singleton,cls).__new__(cls) return cls._instance def __init__(self,name): self.name = name s1 = Singleton('first') s2= Singleton('last') print(s1 == s2) >> True print(s1.name) >> last tips: __new__方法无法避免触发init(),初始的成员变量会进行覆盖
def singleton(cls): _instance = {} def inner(*args,**kwargs): if cls not in _instance: _instance[cls] = cls(*args,**kwargs) return _instance[cls] return inner @singleton class Test: def __init__(self,name): self.name = name t1 = Test('first') t2 = Test('last') print(t1==t2) >> True print(t2.name) >> first (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |