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

调用类的dunder methods(特殊方法)时触发IndexError错误求助

解决 IndexError: Replacement index 1 out of range for positional args tuple

错误原因

你写的字符串'{}{}'包含两个占位符,但format()方法只传入了一个foo()实例,参数数量和占位符数量不匹配,导致索引越界错误。

修复方案

根据你的需求,有几种处理方式:

  1. 打印两次__str__返回值
    如果需要连续打印两次Testing,给format()传两个foo()实例:
class foo(object):
    def __str__(self):
        return 'Testing'
        
    def __repr__(self):
        return 'Programming'
    
print('{}{}'.format(foo(), foo()))  # 输出: TestingTesting
  1. 打印单次__str__返回值
    如果只需要打印一次,去掉多余的占位符即可,甚至可以直接用print()输出对象:
# 写法1
print('{}'.format(foo()))  # 输出: Testing

# 写法2(更简洁)
print(foo())  # print会自动调用__str__方法,输出: Testing
  1. 打印__repr__返回值
    如果想输出Programming(__repr__的返回值),可以用repr()函数:
print(repr(foo()))  # 输出: Programming

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:28:06