单例模式,无论实例化多少次,实例化的都是首次实例化内容
适用于只需要实例化一次的类,比如数据库连接
class Person: __instance = None def __init__(self): self.name = 'nana' def __new__(cls, *args, **kwargs):#__new__在__init__之前执行 if cls.__instance:#判断如果这个实例的值不为空 return cls.__instance #就返回这个实例 cls.__instance = super().__new__(cls)#走到下面说明是第一次实例化,就调用父类 return cls.__instance #然后返回这个实例 p1 = Person() p2 = Person() p1.name = 'www' print(id(p1),id(p2)) #同一个内存地址 print(p2.name) #www