Застрял на классах из одной книги
# Нахождение наибольшего общего делителя def gcd(m, n): while m % n != 0: oldm = m oldn = n m = oldn n = oldm % oldn return n class Fraction: def __init__(self, top, bottom): self.num = top self.den = bottom def __str__(self): return str(self.num) + "/" + str(self.den) def show(self): print(self.num, "/", self.den) def __add__(self, otherfraction): newnum = self.num * otherfraction.den + self.den * otherfraction.num newden = self.den * otherfraction.den common = gcd(newnum, newden) return Fraction(newnum // common, newden // common) def __eq__(self, other): firstnum = self.num * other.den secondnum = other.num * self.den return firstnum == secondnum def __mul__(self, otherfraction): newnum = self.num * otherfraction.num newden = self.den * otherfraction.den common = gcd(newnum, newden) return Fraction(newnum // common, newden // common) def __div__(self, otherfraction): newnum = self.num * otherfraction.den newden = self.den * otherfraction.num common = gcd(newnum, newden) return Fraction(newnum // common, newden // common)
Класс для простых операций с дробями. Почему-то не срабатывает оператор __div__ как собственно и __floordiv__. При делении объектов Fraction выдает Exception
TypeError: unsupported operand type(s) for /: 'Fraction' and 'Fraction'
Написано вроде верно, а почему-то не работает.