一、基于__new__
class Single:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(Single, cls).__new__(cls, *args, **kwargs)
return cls._instance
class Demon(Single):
def foo(self):
print("Hi")
d1 = Demon()
d2 = Demon()
print(id(d1)) # 2110545800776
print(id(d2)) # 2110545800776
二、基于模块
1、重点:一个文件在一个项目中只加载一次