def singleton(cls):
# 接收要实现单例模式的类 <class '__main__.Demo3'>
print('2',cls)
# 创建一个字典用来保存类的实例对象
_instance = {}
def _singleton(*args):
# *args 为接收到的参数
print('3',*args)
# 先判断这个类有没有对象
if cls not in _instance:
print('4',cls)
_instance[cls] = cls(*args) # 创建一个对象,并保存到字典当中
print('7',_instance[cls])
# 将实例对象返回
return _instance[cls]
return _singleton
# 使用单例模式
@singleton
class Demo4(object):
print('1')
# 继续执行自己的内容
def __init__(self,name):
# <__main__.Demo3 object at 0x00000280483EBEB0> C1C=CC=CC=1
print('5',self,name)
self.name = name
print('6',self.name)
a1 = Demo4(4)
a2 = Demo4(2)
print(a1.name)
print(a2.name)
结果都为4