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
我做了一个 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