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

如何在Python类的方法内部正确调用同类带多参数的方法?

报错原因说明
  • 触发「参数other缺失对应值」的核心原因是:__add__ 是实现两个分数相加的运算符重载方法,设计上必须接收一个外部传入的Fraction类型实例作为other参数,你在simplify方法里直接无参调用self.__add__(),完全不符合方法的参数要求,自然会抛错。
  • 除此之外你的代码还存在几个逻辑错位的问题:
    • 方法依赖关系完全搞反了:simplify的核心职责是计算单个分数的最大公约数、完成自身化简,根本不需要在内部调用分数加法逻辑,你写的a = self.__add__()属于完全冗余的错误代码。
    • __add__本身的实现逻辑错误:计算新分数分子、分母时,直接除以simplify()的返回值,既没有拿到正确的化简基准值,也没有生成新的Fraction实例作为返回值。
    • 基础类型注解错误:simplify方法里把n1、n2(实际是分子、分母的整数值)的类型注解写成了Fraction,和实际值类型不匹配。
    • simplify的返回值和方法注解不符:注解要求返回Fraction实例,实际代码里只返回了计算得到的整数型gcd值。
修正方案
  1. 直接删掉simplify方法里错误的a = self.__add__()代码行,从根源上避免参数缺失的报错。
  2. 理顺两个方法的依赖关系:让__add__完成两个分数的分子分母通分计算,生成未化简的临时分数实例后,调用这个实例的simplify方法完成化简,再把化简后的实例返回。
  3. 补全simplify的化简逻辑:计算出分子、分母的最大公约数后,同步把当前实例的num、denom除以这个公约数,最后返回已经完成化简的Fraction实例。
修正后的参考代码
class Fraction:
    # 补充初始化方法,给实例绑定num、denom属性
    def __init__(self, num: int, denom: int):
        self.num = num
        self.denom = denom

    def __add__(self, other: "Fraction") -> "Fraction": 
        # 通分计算两个分数相加的原始值
        new_num = self.num * other.denom + self.denom * other.num
        new_denom = self.denom * other.denom
        # 生成临时分数实例,调用自身的simplify完成化简
        temp_instance = Fraction(new_num, new_denom)
        temp_instance.simplify()
        return temp_instance
           
    def simplify(self) -> "Fraction":
        """ Function to find the gcd of the fraction and return the simplified fraction"""
        # 修正类型注解,取分子、分母的绝对值计算gcd
        n1: int = abs(self.num)
        n2: int = abs(self.denom)
        gcd: int = 1

        k: int = 1
        while k <= n1 and k <= n2:
            if n1 % k == 0 and n2 % k == 0:
                gcd = k
            k += 1
        # 用gcd完成当前实例的分数化简
        self.num = self.num // gcd
        self.denom = self.denom // gcd
        return self

注:如果确实有特殊场景需要在simplify内部调用__add__,必须给__add__传入明确的Fraction实例作为参数,比如调用self.__add__(Fraction(1, 1))实现当前分数加1的逻辑,但从你当前的化简业务逻辑看,这类调用完全没有必要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 12:15:07