单例模式就是单个对象(单个实例)
可以看到创建了三个对象
单例模式:
class Sigleton: # 私有化 __instance = None # 重写 def __new__(cls): print("------> new") if cls.__instance is None: cls.__instance = object.__new__(cls) return cls.__instance else: return cls.__instance s = Sigleton() s1 = Sigleton() print(s) print(s1)
可以看到始终使用的是同一个内存空间
object.__new__(cls)的作用就是,产生一个内存空间,
通过cls.instance = object.__new__(cls)将产生的内存空间的地址赋值给instance
return cls.__instance会将地址扔给__init__(self)