创建型模式-单例模式(使用魔法方法__new__实现)

# 使用魔法方法__new__实现单例模式
# 线程锁:防止创建多个实例
# 双重检查:实例创建后,防止重复加锁占用资源
from threading import Lock


class Singletion():
    _local = Lock()
    _instance = None

    def __new__(cls, *args, **kwargs):
        if not cls._instance:
            with cls._local:
                if not cls._instance:
                    cls._instance = super(Singletion, cls).__new__(cls, *args, **kwargs)
        return cls._instance


if __name__ == "__main__":
   for item in range(10):
       b = Singletion()
       print(id(b))

  

posted @ 2023-06-27 10:35  你看起来真的很好吃  阅读(2)  评论(0编辑  收藏  举报