创建型模式-单例模式(使用魔法方法__new__实现)
# 使用魔法方法__new__实现单例模式
# 线程锁:防止创建多个实例
# 双重检查:实例创建后,防止重复加锁占用资源
from threading import Lock
class Singletion():
_local = Lock()
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
if 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))