为什么要使用单例设计模式?
单例设计模式是为了避免创建对象的避免浪费反复申请内存
需要了解 调用 __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