You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:45:30