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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:10:18