单例模式:一个类,在整个项目运行周期内只有一个实例。
# 使用装饰器实现单例模式
def singleton(cls, *args, **kwargs):
instance = {}
def _instance():
if cls not in instance:
instance[cls] = cls(*args, *kwargs)
return instance[cls]
return _instance
@singleton
class Test_singleton:
def __init__(self):
self.num = 0
def add(self):
self.num = 99
ts1 = Test_singleton()
ts2 = Test_singleton()
print(ts1)
print(ts2)
'''
<__main__.Test_singleton object at 0x000001D4CFDCC7F0>
<__main__.Test_singleton object at 0x000001D4CFDCC7F0>
'''
可以看出,虽然进行了两次实例化,但是仍然为同一个实例。