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

Python打印类所有实例仅输出对象地址,如何获取实例实际信息

类实例自定义打印方案

你当前看到的内存地址格式输出是Python类实例的默认表示逻辑,只要给类添加自定义的字符串表示魔法方法即可实现可读输出,无需引入任何第三方模块。

核心修改点

Python打印列表内的实例时会调用实例的__repr__方法,单独打印单个实例时会调用__str__方法,你可以按需定义这两个方法:

class Planets:
    instances = []
    def __init__(self, name, days, p_type, distance_from_sun):
        # 新增name属性存储星球标识,你也可以根据自己的需求保留/调整属性
        self.name = name
        self.lengthOfDay = days
        self.planetType = p_type
        self.distanceFromSun = distance_from_sun
        self.__class__.instances.append(self)
    
    # 定义列表打印时的输出格式
    def __repr__(self):
        return f"<Planet:{self.name} 公转周期{self.lengthOfDay}天>"
    
    # 定义单个实例打印时的输出格式,可和__repr__内容一致
    def __str__(self):
        return f"星球:{self.name},类型:{self.planetType},距太阳距离:{self.distanceFromSun}天文单位,公转周期:{self.lengthOfDay}天"

实例初始化调整

创建实例时补充name参数即可:

T = 'Terrestrial'
G = 'Gas Giant'
I = 'Ice Giant'

mercury = Planets("水星", 88, T, 0.4)
venus = Planets("金星", 225, T, 0.7)
earth = Planets("地球", 365, T, 1)
mars = Planets("火星", 687, T, 1.5)
jupiter = Planets("木星", 4333, G, 5.2)
saturn = Planets("土星", 10759, G, 9.5)
uranus = Planets("天王星", 30687, I, 19.8)
neptune = Planets("海王星", 60190, I, 30)

效果验证

  • 打印所有实例列表:print(Planets.instances) 会输出你定义的__repr__格式内容,不再显示内存地址
  • 打印单个实例:print(earth) 会输出__str__定义的可读内容
  • 你之前尝试的print('\n'.join(A.instances))报错的原因是join方法仅支持拼接字符串,修改为print('\n'.join(str(inst) for inst in Planets.instances))即可实现逐行打印所有实例信息。

内容的提问来源于stack exchange,提问作者SkyWalker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:24:03