如何修改Python类实例默认显示,使其展示类名而非内存地址
自定义Python类实例的显示格式
完全可以实现!你看到的那些<__main__.Animal at 0x...>是Python默认给类实例生成的字符串表示,要让列表打印时显示成[Lion, Gorilla, Tiger, Baboon],只需要在你的Animal类里重写特殊方法就行,核心是__repr__——因为当你打印包含实例的容器(比如列表)时,Python会逐个调用实例的__repr__方法来生成显示内容。
具体实现代码
这里直接给你可运行的示例:
class Animal: def __init__(self, name): self.name = name # 初始化时传入动物名称 def __repr__(self): # 重写__repr__,返回我们想要的动物名称 return self.name # 可选:如果希望单独打印单个实例时也显示名称,可以加上__str__ def __str__(self): return self.name
测试效果
创建实例列表并打印:
animal_list = [Animal("Lion"), Animal("Gorilla"), Animal("Tiger"), Animal("Baboon")] print(animal_list)
运行后输出就是你想要的:
[Lion, Gorilla, Tiger, Baboon]
简单解释
__repr__:负责生成实例的“官方”字符串表示,容器(列表、元组等)会调用这个方法来展示内部元素。它的设计初衷是尽可能让输出的字符串可以通过eval()重建实例,但这里我们直接返回名称更符合你的需求。__str__:是实例的“友好”字符串表示,当你直接print(单个实例)时会被调用,和__repr__配合可以让实例在不同场景下的显示都符合预期。
内容的提问来源于stack exchange,提问作者Boris Adaev
相关产品推荐
相关产品推荐

