From: Raymond Hettinger Date: Thu, 24 Jan 2008 23:50:26 +0000 (+0000) Subject: More code cleanup. Remove unnecessary indirection to useless class methods. X-Git-Tag: v2.6a1~419 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=909e334e8a525e8430f1532c0ecf133f19d3d185;p=thirdparty%2FPython%2Fcpython.git More code cleanup. Remove unnecessary indirection to useless class methods. --- diff --git a/Lib/rational.py b/Lib/rational.py index 6824f4a61a69..0d3ea2f04f11 100755 --- a/Lib/rational.py +++ b/Lib/rational.py @@ -285,8 +285,9 @@ class Rational(RationalAbc): __truediv__, __rtruediv__ = _operator_fallbacks(_div, operator.truediv) __div__, __rdiv__ = _operator_fallbacks(_div, operator.div) - @classmethod - def _floordiv(cls, a, b): + def __floordiv__(a, b): + """a // b""" + # Will be math.floor(a / b) in 3.0. div = a / b if isinstance(div, RationalAbc): # trunc(math.floor(div)) doesn't work if the rational is @@ -296,28 +297,27 @@ class Rational(RationalAbc): else: return math.floor(div) - def __floordiv__(a, b): - """a // b""" - # Will be math.floor(a / b) in 3.0. - return a._floordiv(a, b) - def __rfloordiv__(b, a): """a // b""" # Will be math.floor(a / b) in 3.0. - return b._floordiv(a, b) - - @classmethod - def _mod(cls, a, b): - div = a // b - return a - b * div + div = a / b + if isinstance(div, RationalAbc): + # trunc(math.floor(div)) doesn't work if the rational is + # more precise than a float because the intermediate + # rounding may cross an integer boundary. + return div.numerator // div.denominator + else: + return math.floor(div) def __mod__(a, b): """a % b""" - return a._mod(a, b) + div = a // b + return a - b * div def __rmod__(b, a): """a % b""" - return b._mod(a, b) + div = a // b + return a - b * div def __pow__(a, b): """a ** b