调用类的dunder methods(特殊方法)时触发IndexError错误求助
解决 IndexError: Replacement index 1 out of range for positional args tuple
错误原因
你写的字符串'{}{}'包含两个占位符,但format()方法只传入了一个foo()实例,参数数量和占位符数量不匹配,导致索引越界错误。
修复方案
根据你的需求,有几种处理方式:
- 打印两次
__str__返回值
如果需要连续打印两次Testing,给format()传两个foo()实例:
class foo(object): def __str__(self): return 'Testing' def __repr__(self): return 'Programming' print('{}{}'.format(foo(), foo())) # 输出: TestingTesting
- 打印单次
__str__返回值
如果只需要打印一次,去掉多余的占位符即可,甚至可以直接用print()输出对象:
# 写法1 print('{}'.format(foo())) # 输出: Testing # 写法2(更简洁) print(foo()) # print会自动调用__str__方法,输出: Testing
- 打印
__repr__返回值
如果想输出Programming(__repr__的返回值),可以用repr()函数:
print(repr(foo())) # 输出: Programming
内容的提问来源于stack exchange,提问作者Reactoo
相关产品推荐
相关产品推荐

