我自己想写一个类Fraction。我现在写了一些东西,给我输出这样的表达式。Fraction(1,2) + Fraction(2,1). 但我如何定义加法,使我可以将一个整数加到一个分数上,例如:1 + Fraction(2,1)。这是我对加法的定义。
def __add__(self, argument_twee):
return breuk(self.teller*argument_twee.noemer + self.noemer*argument_twee.teller, self.noemer*argument_twee.noemer)
我会做另一个将整数转换为分数的函数,如果你需要帮助写代码,我可以帮助你。
检查类型 argument_twee
先,或者说,看看能不能把它当作一个 Fraction
.
def __add__(self, argument_twee):
try:
n = argument_twee.noemer
d = argument_twee.teller
except AttributeError:
n = argument_twee
d = 1
return breuk(self.teller*n + self.noemer*d, self.noemer*n)
(可以添加额外的测试来捕获非数字参数。)
这将处理 Fraction(1,2) + 1
. 要处理 1 + Fraction(1,2)
,你需要实现 __radd__
,这(因为所需的加法是换算式的)就像
__radd__ = __add__
你需要用 isinstance
检查其是否是一个int或任何东西。
class A:
def __add__(self,a):
if isinstance(a,int):
print(a)
else:
print("not Int")
v = A()
v + 1
v + A()
OUTPUT
1
not Int