重载方法的参数问题
def __add__(self, other):
"""Overload addition operator"""
return Rational(self.sign * self.numerator * other.denominator +
other.sign * other.numerator * self.denominator,
self.denominator * other.denominator)
def __sub__(self, other):
"""Overload subtraction operator"""
return self + (-other)
def __mul__(self, ohter):
"""Overload multiplication operator"""
return Rational(self.numerator * ohter.numerator,
self.sign * self.denominator * ohter.sign *
ohter.denominator)
def __div__(self, ohter):
"""Overload / division operator"""
return Rational(self.numerator * ohter.denominator,
self.sign * self.denominator * ohter.sign *
ohter.numerator)
def __truediv__(self, other):
"""Overload / division operator"""
return self.__div__(other)
def __eq__(self, other):
"""Overload equality operator"""
return (self - other).numerator == 0
def __lt__(self, other):
"""Overload less-than operator"""
return (self - other).sign < 0
def __gt__(self, other):
"""Overload greater-than operator"""
return (self - other).sign > 0
def __le__(self, other):
"""Overload less-than or equal-to operator"""
return (self < other) or (self == other)
def __ge__(self, other):
"""Overload greater-than or equal-to operator"""
return (self > other) or (self == other)
def __ne__(self, other):
"""Overload inequality operator"""
return not (self == other)
def __abs__(self):
"""Overload built-in function abs"""
return Rational(self.numerator, self.denominator)
def __str__(self):
"""String representation"""
if self.sign == -1:
signString = "-"
else:
signString = ""
if self.numerator == 0:
return "0"
elif self.denominator == 1:
return "%s%d" % (signString, self.numerator)
else:
return "%s%d/%d" % (signString, self.numerator, self.denominator)
def __int__(self):
"""Overload integer representation"""
return self.sign * divmod(self.numerator, self.denominator)[0]
def __float__(self):
"""Overload floating-point representation"""
return self.sign * float(self.numerator) / self.denominator
def __coerce__(self, other):
"""Overload coercion. Can only coerce int to Rational"""
if type(other) == type(1):
return (self, Rational(other))
else:
return None
编译不通过,说是找不到other,请问怎么办?谢谢!