__rsub__
私が作成した Fraction というクラスで関数 を使用しようとしています。
Fraction クラスのコードは次のとおりです。
def __init__(self, num, denom):
''' Creates a new Fraction object num/denom'''
self.num = num
self.denom = denom
self.reduce()
def __repr__(self):
''' returns string representation of our fraction'''
return str(self.num) + "/" + str(self.denom)
def reduce(self):
''' converts our fractional representation into reduced form'''
divisor = gcd(self.num, self.denom)
self.num = self.num // divisor
self.denom = self.denom // divisor
def __sub__(self, other):
if isinstance(other,Fraction) == True:
newnum = self.num * other.denom - self.denom*other.num
newdenom = self.denom * other.denom
return Fraction(newnum, newdenom)
ここで、__radd__
または__rmul__
使用する場合:return self + other
またはreturn self * other
それぞれ、目的の結果が実行されます。ただし、単に演算子を変更するだけでは機能__rsub__
し__rtruediv__
ません。どうすればこれを修正できますか?
基本的に、関数を呼び出すコードは次のとおりです。
f = Fraction(2,3)
g = Fraction(4,8)
print("2 - f: ", 2 - f)
print("2 / f: ", 2 / f)
助けてくれてありがとう!