我创建了一个可以进行一些分数算术的类。我更改了__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
答案 0 :(得分:1)
在return self
实施结束时,您遗失了__iadd__
。允许使用增强赋值方法返回不同的实例,这就是return self
必需的原因。
在一个不相关的说明中,您可以通过在就地添加方面实施添加来减少一些代码重复,如下所示:
def __add__(self, other):
clone = Fraction(self.num, self.den)
clone += other
return clone