Python 为 class 创建内置方法

Python create built-in method for class

我做了一个 class 可以做一些分数运算。我更改了 __add____sub____mul____div__ 的内置方法,以便它可以对分数进行算术运算。我可以将它与 +-*/ 符号一起使用。 我的问题是,我需要做什么才能将 __iadd__ 用作 +=.

class Fraction:
    def __init__(self,num,den):
        self.num = num
        self.den = den
    def __str__(self):
        return str(self.num)+" / "+str(self.den)

    def __add__(self,other):
        num = self.num * other.den + other.num * self.den
        den = self.den * other.den
        common = self.gcf(num,den)
        return Fraction(num/common , den/common)

    def __iadd__(self,other):
        self.num = self.num * other.den + other.num * self.den
        self.den = self.den * other.den
        common = self.gcf(self.num,self.den)
        self.num = self.num/common
        self.den = self.den/common

您在 __iadd__ 实施结束时缺少 return self。允许扩展赋值方法 return 不同的实例,这就是为什么 return self 是必要的。

在一个不相关的笔记中,您可以通过就地加法实现加法来减少一些代码重复,如下所示:

def __add__(self, other):
    clone = Fraction(self.num, self.den)
    clone += other
    return clone