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

Python如何在__str__输出中对齐包含list类型的字段?

报错根因

Python 内置的 list 类型没有实现支持对齐规则的 __format__ 方法,直接给列表传 <3 这类对齐说明符时,解释器找不到对应的格式化逻辑就会抛出 TypeError。

解决方案

先将所有待格式化的对象显式转为字符串类型,再对字符串应用对齐规则即可。

修正后可运行代码

class MyClass():
    # 额外优化:不要用可变对象作为函数默认参数,避免多实例共享同一份列表的bug
    def __init__(self, a = None, b = None, c = None):
        self.a = a
        self.b = b if b is not None else []
        self.c = c

    def __str__(self):
        # 所有参数先转字符串,再应用左对齐3位的配置
        return "a: {:<3}, b: {:<3}, c:{:<3}".format(
            str(self.a), str(self.b), str(self.c))

if __name__ == "__main__":
    obj = MyClass(1, [1,2], 2)
    print(obj)

运行输出结果:

a: 1  , b: [1, 2], c:2  

如果要格式化的列表长度更长,可以根据实际需要调整对齐长度(比如把<3改成<10),对齐规则不会截断超出长度的内容,只是长度不足时会自动补空格。
你也可以用f-string实现同样的效果,写法更简洁:

def __str__(self):
    return f"a: {str(self.a):<3}, b: {str(self.b):<3}, c:{str(self.c):<3}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:24:03