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

Python中__add__函数返回值引发的输出格式异常问题

Fraction类加法方法返回值异常的问题解决

问题场景

用户实现的Fraction类__add__方法,内部计算完相加后的分数直接打印,但返回值为None。执行驱动代码时出现异常输出:先显示计算结果,再显示等式后跟None。

原代码

__add__方法实现

def __add__(self, rightSide):
    """
    Purpose: Adds two fractions together to get the sum
    :param rightSide: Placeholder for second fraction to be calculated with original fraction
    :return: None
    """
    numer = self.__numerator * rightSide.getDenominator() + self.__denominator * rightSide.getNumerator()
    denom = self.__denominator * rightSide.getDenominator()
    new_frac = Fraction(numer, denom)
    print(new_frac)

驱动代码

print(f'{frac_a} + {frac_b} = ', frac_a + frac_b)

实际输出

16/15
2/5 + 2/3 =  None

问题原因

  1. 调用frac_a + frac_b时,触发__add__方法,方法内部的print(new_frac)直接输出了计算结果16/15。
  2. 由于__add__方法没有返回有效对象(默认返回None),frac_a + frac_b的结果就是None,导致驱动代码的print语句接着输出2/5 + 2/3 = None。

修复方案

修改__add__方法,移除内部的print语句,改为返回计算得到的Fraction对象:

def __add__(self, rightSide):
    """
    Purpose: Adds two fractions together to get the sum
    :param rightSide: Placeholder for second fraction to be calculated with original fraction
    :return: The sum of the two fractions as a Fraction object
    """
    numer = self.__numerator * rightSide.getDenominator() + self.__denominator * rightSide.getNumerator()
    denom = self.__denominator * rightSide.getDenominator()
    new_frac = Fraction(numer, denom)
    return new_frac

修复后效果

执行原驱动代码,输出会变为:

2/5 + 2/3 =  16/15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:40:20