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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:42:46