import os # 单例设计模式,只返回一个对象 class Singlet(object): _instance=None _first_init=False # 类一创建就初始化(个人理解:类似java中的构造方法),必须有返回值 def __new__(cls,age,name): if not cls._instance: cls._instance=object.__new__(cls) return cls._instance # 初始化数据 def __init__(self,age,name): if not self._first_init: self.age=age self.name=name Singlet._first_init=True # 定义统一打印的方法 def __str__(self): return "姓名为:%s"%self.name+" 年龄为:%d"%self.age # 对象再被销毁之前,调用此方法,可以做一些资源的释放,流的关闭等 def __del__(self): print("我被删除了") # 以下虽然创建两个对象, # 但是他们是通过单例的设计模式,只创建了一个对象, # 所以,结果值是一样的 a=Singlet(26,"xiaokeke") b=Singlet(22,"liulili") print(id(a)) print(id(b)) print(a.name) print(b.name) # 结果如下: #2585443917896 #2585443917896 # xiaokeke # xiaokeke # 我被删除了