Python单例模式实现
本文章单纯是为了以后自己方便查阅时看看,为了加强自己的理解,不喜勿喷。
一、__new__方法实现单例模式
class SingleTon(object): _obj = None __init__Flag = True def __new__(cls, *args, **kwargs): if cls._obj == None: cls._obj = super().__new__(cls) return cls._obj def __init__(self,name): if SingleTon.__init__Flag: print("单例模式") self.name = name SingleTon.__init__Flag = False a = SingleTon('WCY') b = SingleTon('ZYL') print(a) print(b)
二、函数装饰器实现
def singleton(cls): _instance = {} def inner(): if cls not in _instance: _instance[cls] = cls() return _instance[cls] return inner @singleton class myTest(object): def __init__(self): pass s1 = myTest() s2 = myTest() print(s1) print(s2)