Python为类创建内置方法

时间:2015-04-11 16:31:38

标签: python class oop built-in arithmetic-expressions

我创建了一个可以进行一些分数算术的类。我更改了__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

1 个答案:

答案 0 :(得分:1)

return self实施结束时,您遗失了__iadd__。允许使用增强赋值方法返回不同的实例,这就是return self必需的原因。

在一个不相关的说明中,您可以通过在就地添加方面实施添加来减少一些代码重复,如下所示:

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