[3.14] gh-122450: Expand documentation for `Rational and Fraction` (GH-136800) (#137363)

(cherry picked from commit b266fbc9ec)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
Sergey B Kirpichev 2025-10-07 21:15:22 +03:00 committed by GitHub
parent 134586aaf3
commit 058c2770a2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 18 additions and 8 deletions

View file

@ -14,8 +14,8 @@
The :mod:`fractions` module provides support for rational number arithmetic.
A Fraction instance can be constructed from a pair of integers, from
another rational number, or from a string.
A Fraction instance can be constructed from a pair of rational numbers, from
a single number, or from a string.
.. index:: single: as_integer_ratio()
@ -25,8 +25,8 @@ another rational number, or from a string.
The first version requires that *numerator* and *denominator* are instances
of :class:`numbers.Rational` and returns a new :class:`Fraction` instance
with value ``numerator/denominator``. If *denominator* is ``0``, it
raises a :exc:`ZeroDivisionError`.
with a value equal to ``numerator/denominator``.
If *denominator* is zero, it raises a :exc:`ZeroDivisionError`.
The second version requires that *number* is an instance of
:class:`numbers.Rational` or has the :meth:`!as_integer_ratio` method
@ -125,7 +125,8 @@ another rational number, or from a string.
.. attribute:: denominator
Denominator of the Fraction in lowest term.
Denominator of the Fraction in lowest terms.
Guaranteed to be positive.
.. method:: as_integer_ratio()

View file

@ -69,11 +69,11 @@ The numeric tower
.. attribute:: numerator
Abstract.
Abstract. The numerator of this rational number.
.. attribute:: denominator
Abstract.
Abstract. The denominator of this rational number.
.. class:: Integral

View file

@ -290,18 +290,27 @@ Real.register(float)
class Rational(Real):
""".numerator and .denominator should be in lowest terms."""
"""To Real, Rational adds numerator and denominator properties.
The numerator and denominator values should be in lowest terms,
with a positive denominator.
"""
__slots__ = ()
@property
@abstractmethod
def numerator(self):
"""The numerator of a rational number in lowest terms."""
raise NotImplementedError
@property
@abstractmethod
def denominator(self):
"""The denominator of a rational number in lowest terms.
This denominator should be positive.
"""
raise NotImplementedError
# Concrete implementation of Real's conversion to float.