Python打印列表中自定义类对象显示内存地址,如何输出指定属性?
解决自定义类对象打印显示问题
你遇到的是Python自定义类默认字符串表示的问题——默认情况下,打印对象会输出它的类名和内存地址,也就是你看到的 <__main__.MyClass object at 0x0000000003129128>。要让它输出你想要的"Zuck",有两种实用的解决方法:
方法一:重写__str__方法
__str__是Python专门用来返回对象「友好字符串表示」的方法,当你用print()打印对象时会自动调用它。修改你的类代码即可实现需求:
from math import * import time class MyClass: def __init__(self, name, age): self.name = name self.age = age # 新增__str__方法,指定打印对象时返回name属性 def __str__(self): return self.name people = [MyClass("David",17), MyClass("George",63), MyClass("Zuck",12), MyClass("Mark",18) ] print(people[2]) # 现在会输出 Zuck
方法二:直接访问对象的name属性
如果你不想修改类的定义,也可以直接打印对象的目标属性,这种方式更灵活:
print(people[2].name) # 直接输出 Zuck
额外补充
如果需要在Python交互式环境中直接输入对象名,也能看到更清晰的调试信息,可以同时重写__repr__方法(它负责返回对象的「官方字符串表示」):
def __repr__(self): return f"MyClass(name='{self.name}', age={self.age})"
这样在命令行里直接输入people[2],会返回MyClass(name='Zuck', age=12),方便你快速查看对象的完整属性信息。
内容的提问来源于stack exchange,提问作者ikuro
相关产品推荐
相关产品推荐

