如何让这段Python代码打印字符串而非内存地址?
解决打印对象显示内存地址的问题
你的代码中使用enumerate(self.items)打印时,如果self.items包含自定义对象,Python默认会输出对象的内存地址(因为调用了对象的__repr__方法)。要让输出显示字符串,有两种常用方案:
方案1:给自定义对象添加__str__方法
如果self.items中的元素是你自定义的类实例,直接在类中重写__str__方法,让对象返回友好的字符串表示:
# 示例自定义类 class YourItemClass: def __init__(self, name): self.name = name # 重写__str__方法,返回对象的字符串描述 def __str__(self): return self.name
修改后,原来的display方法无需改动,enumerate(self.items)打印时会自动调用对象的__str__方法,输出字符串而非内存地址。
方案2:在打印时手动格式化输出
如果无法修改元素的类,直接在display方法中手动将每个元素转换为字符串并格式化输出:
def display(self): selected_item = None if selected_item is None: print("Choose an option:") # 从1开始枚举选项,0留给Back for idx, item in enumerate(self.items, start=1): print(f"{idx}. {str(item)}") print("0. Back")
这样即使对象没有重写__str__,str(item)也会尝试返回可读的字符串,你也可以根据对象属性手动拼接,比如f"{idx}. {item.name}"。
内容的提问来源于stack exchange,提问作者Abbas moradi
相关产品推荐
相关产品推荐

