单例模式

单例的本质:一个类最多生成一个实例

__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>

 

posted @ 2019-04-05 22:55  期待me  阅读(76)  评论(0)    收藏  举报