如何让Python类追踪最后创建的实例?以Planeta类为例
解决Planeta类获取最后创建实例的问题
你的代码问题出在实例属性覆盖了类属性:在__init__里给self.ult赋值时,是给每个实例创建了独立的属性,而非更新类本身的ult属性,导致每个实例的ult只记录自己的名字。
修改后的代码
class Planeta: ult = '' def __init__(self, nombre): self.nombre = nombre Planeta.ult = nombre # 更新类属性,所有实例共享这个值 print(self.nombre, 'construido') def last(self): print('Ultimo construido:', Planeta.ult) # 读取类属性的最新值
测试代码
urano = Planeta('Urano') neptuno = Planeta('Neptuno') pluton = Planeta('Pluton') urano.last() # 输出:Ultimo construido: Pluton
关键修改点
- 把
self.ult = nombre改为Planeta.ult = nombre:每次创建实例时,直接更新类属性,确保所有实例共享同一个"最后创建的实例"记录。 last()方法中访问Planeta.ult而非self.ult:避免读取当前实例的私有属性,确保获取的是类层面的最新值。
更灵活的写法(支持子类继承)
如果后续需要继承Planeta类,可以用self.__class__.ult代替硬编码的类名,适配子类场景:
class Planeta: ult = '' def __init__(self, nombre): self.nombre = nombre self.__class__.ult = nombre print(self.nombre, 'construido') def last(self): print('Ultimo construido:', self.__class__.ult)
内容的提问来源于stack exchange,提问作者Márquez
相关产品推荐
相关产品推荐

