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)

 

posted @ 2021-11-11 10:35  非非非常帅的辰  阅读(30)  评论(0编辑  收藏  举报