为什么要使用单例设计模式?
单例设计模式是为了避免创建对象的避免浪费反复申请内存
需要了解
调用 __new__方法申请内存
如果不重写 __new__方法 会自己调用 object 的__new__方法
重写new方法,需要自己手动申请内存
class Singleton(object):
# 私有化
__instance = None
__is_first = True
@classmethod
def __new__(cls, *args, **kwargs):
# 判断instance是否为空,为空则申请内存
if cls.__instance is None:
# 申请内存
cls.__instance = object.__new__(cls)
return cls.__instance
def __init__(self, a, b):
# 如果再次创建对象 内存地址相同 赋值被覆盖
# 需要判断是否是第一次创建 而保证赋值不被覆盖
if self.__is_first:
self.a = a
self.b = b
self.__is_first = False
进行赋值
s1 = Singleton('a', 'b')
s2 = Singleton('c', 'd')
查看id
print(hex(id(s1)))
print(hex(id(s2)))
输出结果一致 没有重复申请内存
0x21c0c18
0x21c0c18
查看赋值
print(s2.a, s1.b)
第二次赋值并没有覆盖第一次赋值
a b