]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merge Fraction._add/sub() to a common helper _add_sub_()
authorSergey B Kirpichev <skirpichev@gmail.com>
Thu, 11 Mar 2021 07:38:24 +0000 (10:38 +0300)
committerSergey B Kirpichev <skirpichev@gmail.com>
Sun, 14 Mar 2021 05:26:40 +0000 (08:26 +0300)
Lib/fractions.py

index de3e23b759227c3bc03cc299f272b12c513399cc..a9fa62dba7b438a05e1b83c93cb8922087a61157 100644 (file)
@@ -4,6 +4,7 @@
 """Fraction, infinite-precision, real numbers."""
 
 from decimal import Decimal
+import functools
 import math
 import numbers
 import operator
@@ -380,20 +381,17 @@ class Fraction(numbers.Rational):
 
         return forward, reverse
 
-    def _add(a, b):
-        """a + b"""
+    def _add_sub_(a, b, pm=int.__add__):
         da, db = a.denominator, b.denominator
-        return Fraction(a.numerator * db + b.numerator * da,
+        return Fraction(pm(a.numerator * db, b.numerator * da),
                         da * db)
 
+    _add = functools.partial(_add_sub_)
+    _add.__doc__ = 'a + b'
     __add__, __radd__ = _operator_fallbacks(_add, operator.add)
 
-    def _sub(a, b):
-        """a - b"""
-        da, db = a.denominator, b.denominator
-        return Fraction(a.numerator * db - b.numerator * da,
-                        da * db)
-
+    _sub = functools.partial(_add_sub_, pm=int.__sub__)
+    _sub.__doc__ = 'a - b'
     __sub__, __rsub__ = _operator_fallbacks(_sub, operator.sub)
 
     def _mul(a, b):