bpo-42182: stdtypes doc - update and fix links to several dunder methods (GH-27384)

This commit is contained in:
andrei kulakov 2021-12-10 04:40:06 -05:00 committed by GitHub
parent 3fee7776e6
commit 8c74713d0e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -178,13 +178,14 @@ operators are only defined where they make sense; for example, they raise a
single: __ge__() (instance method)
Non-identical instances of a class normally compare as non-equal unless the
class defines the :meth:`__eq__` method.
class defines the :meth:`~object.__eq__` method.
Instances of a class cannot be ordered with respect to other instances of the
same class, or other types of object, unless the class defines enough of the
methods :meth:`__lt__`, :meth:`__le__`, :meth:`__gt__`, and :meth:`__ge__` (in
general, :meth:`__lt__` and :meth:`__eq__` are sufficient, if you want the
conventional meanings of the comparison operators).
methods :meth:`~object.__lt__`, :meth:`~object.__le__`, :meth:`~object.__gt__`, and
:meth:`~object.__ge__` (in general, :meth:`~object.__lt__` and
:meth:`~object.__eq__` are sufficient, if you want the conventional meanings of the
comparison operators).
The behavior of the :keyword:`is` and :keyword:`is not` operators cannot be
customized; also they can be applied to any two objects and never raise an
@ -698,7 +699,7 @@ Hashing of numeric types
------------------------
For numbers ``x`` and ``y``, possibly of different types, it's a requirement
that ``hash(x) == hash(y)`` whenever ``x == y`` (see the :meth:`__hash__`
that ``hash(x) == hash(y)`` whenever ``x == y`` (see the :meth:`~object.__hash__`
method documentation for more details). For ease of implementation and
efficiency across a variety of numeric types (including :class:`int`,
:class:`float`, :class:`decimal.Decimal` and :class:`fractions.Fraction`)
@ -1334,7 +1335,7 @@ loops.
range(start, stop[, step])
The arguments to the range constructor must be integers (either built-in
:class:`int` or any object that implements the ``__index__`` special
:class:`int` or any object that implements the :meth:`~object.__index__` special
method). If the *step* argument is omitted, it defaults to ``1``.
If the *start* argument is omitted, it defaults to ``0``.
If *step* is zero, :exc:`ValueError` is raised.
@ -4793,9 +4794,9 @@ their implementation of the context management protocol. See the
Python's :term:`generator`\s and the :class:`contextlib.contextmanager` decorator
provide a convenient way to implement these protocols. If a generator function is
decorated with the :class:`contextlib.contextmanager` decorator, it will return a
context manager implementing the necessary :meth:`__enter__` and
:meth:`__exit__` methods, rather than the iterator produced by an undecorated
generator function.
context manager implementing the necessary :meth:`~contextmanager.__enter__` and
:meth:`~contextmanager.__exit__` methods, rather than the iterator produced by an
undecorated generator function.
Note that there is no specific slot for any of these methods in the type
structure for Python objects in the Python/C API. Extension types wanting to