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

如何在Python类的__str__方法中加入循环以完整输出字典内容?

问题原因分析

你遇到的问题核心在于**return语句的特性**:一旦__str__方法执行到return,整个方法就会立即终止,不会继续执行后续的循环迭代。

举个例子,如果你的__str__是这么写的:

def __str__(self):
    for fruit, color in self.fruits.items():
        return f"{fruit}: {color}"

那循环第一次迭代到apple时,就触发了return,方法直接结束,后面的banana、cherry根本没机会被处理,自然只能输出第一行内容。

解决方案:循环拼接完整字符串

要实现完整输出,你需要先把字典里所有的键值对拼接成一个完整的字符串,最后再一次性返回这个字符串。这里有两种常用的写法:

方法1:用列表收集内容再拼接

这种方式可读性强,适合新手理解:

class Fruit:
    def __init__(self):
        self.fruits = {
            'apple': 'red',
            'banana': 'yellow',
            'cherry': 'red'
        }
    
    def __str__(self):
        # 创建一个空列表,用来存储每一行的字符串
        output_lines = []
        # 遍历字典的所有键值对
        for fruit_name, fruit_color in self.fruits.items():
            # 把每一行内容加入列表
            output_lines.append(f"{fruit_name}: {fruit_color}")
        # 用换行符把列表里的所有行拼接成一个字符串,然后返回
        return '\n'.join(output_lines)

# 测试
fruit = Fruit()
print(fruit)

方法2:用生成器表达式简化代码

如果想让代码更简洁,可以用生成器表达式直接拼接:

def __str__(self):
    return '\n'.join(f"{name}: {color}" for name, color in self.fruits.items())

这种写法和方法1的效果完全一样,只是更紧凑。

输出效果

运行上面的代码,执行print(fruit)时,就会输出所有行:

apple: red
banana: yellow
cherry: red

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:30:38