Python报错TypeError: Fraction.__str__()缺少必需参数'self'求助
Fraction类错误排查与解决
错误原因
问题出在这一行:
__repr__ = __str__()
你在这里直接调用了__str__()方法,但__str__是实例方法,必须在类的实例对象上调用,类定义阶段还没有创建任何实例,自然没有self参数传递进去,所以会抛出TypeError: Fraction.__str__() missing 1 required positional argument: 'self'错误。
修正方案
把调用方法的写法改成直接引用方法对象,去掉括号:
__repr__ = __str__
修正后的完整代码
class Fraction: def __init__(self, numerator, denominator): self.n = numerator self.d = denominator def __str__(self): return f'{self.n}/{self.d}' __repr__ = __str__ # 去掉括号,直接引用方法对象 def __add__(self, other): # 实现分数相加 n = self.n * other.d + self.d * other.n d = self.d * other.d return Fraction(n, d) # 返回新的Fraction对象
修改后,__repr__与__str__指向同一个方法,无论是打印实例还是在交互式环境中显示实例,都会使用__str__的逻辑输出分数格式,同时避免了调用方法导致的错误。
内容的提问来源于stack exchange,提问作者TheSKy
相关产品推荐
相关产品推荐

