单例模式
单例的本质:一个类最多生成一个实例
__new__:
1.真正生成实例的方法
2.这个方法里,要判断是否存在_instance的类变量如果已经存在了,直接返回
不存在,会给_instance赋值一个新生成的实例变量
#coding=utf-8
class Singleton:
_instance=None #定义私有变量
def __init__(self):
if not Singleton._instance:
print("instance begin create")
else:
print("instance is already create")
@classmethod
def get_instance(cls):
if not cls._instance:
cls.instance=Singleton()
return cls._instance
demo1=Singleton().get_instance()#获取唯一实例的内存
demo2=Singleton().get_instance()#获取唯一实例的内存
print('Singleton().get_instance\t',id(demo1))#内存地址一样
print('Singleton().get_instance\t',id(demo2))#内存地址一样
demo3=Singleton()
demo4=Singleton()
print("Singleton\t",demo3)
print("Singleton\t",demo4)
结果:
instance begin create
instance begin create
instance begin create
instance begin create
Singleton().get_instance 1647577280
Singleton().get_instance 1647577280
instance begin create
instance begin create
Singleton <__main__.Singleton object at 0x010AB2F0>
Singleton <__main__.Singleton object at 0x03552630>
浙公网安备 33010602011771号