Skip to content

Commit 598b3c9

Browse files
committed
Merge Fraction._add/sub() to a common helper _add_sub_()
1 parent cd8dcbc commit 598b3c9

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

Lib/fractions.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"""Fraction, infinite-precision, real numbers."""
55

66
from decimal import Decimal
7+
import functools
78
import math
89
import numbers
910
import operator
@@ -380,20 +381,17 @@ def reverse(b, a):
380381

381382
return forward, reverse
382383

383-
def _add(a, b):
384-
"""a + b"""
384+
def _add_sub_(a, b, pm=int.__add__):
385385
da, db = a.denominator, b.denominator
386-
return Fraction(a.numerator * db + b.numerator * da,
386+
return Fraction(pm(a.numerator * db, b.numerator * da),
387387
da * db)
388388

389+
_add = functools.partial(_add_sub_)
390+
_add.__doc__ = 'a + b'
389391
__add__, __radd__ = _operator_fallbacks(_add, operator.add)
390392

391-
def _sub(a, b):
392-
"""a - b"""
393-
da, db = a.denominator, b.denominator
394-
return Fraction(a.numerator * db - b.numerator * da,
395-
da * db)
396-
393+
_sub = functools.partial(_add_sub_, pm=int.__sub__)
394+
_sub.__doc__ = 'a - b'
397395
__sub__, __rsub__ = _operator_fallbacks(_sub, operator.sub)
398396

399397
def _mul(a, b):

0 commit comments

Comments
 (0)