关于python单例设计模式

tech2023-07-29  111

为什么要使用单例设计模式?

单例设计模式是为了避免创建对象的避免浪费反复申请内存

需要了解 调用 __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
最新回复(0)