mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
[3.13] gh-90190: Add doc for using singledispatch
with precise collection type hints (GH-116544) (#124710)
gh-90190: Add doc for using `singledispatch` with precise collection type hints (GH-116544)
(cherry picked from commit 2357d5ba48
)
Co-authored-by: Matt Delengowski <matt.delengowski@gmail.com>
This commit is contained in:
parent
ec4d7b5d22
commit
2b74cce521
1 changed files with 19 additions and 0 deletions
|
@ -492,6 +492,25 @@ The :mod:`functools` module defines the following functions:
|
|||
... print(arg.real, arg.imag)
|
||||
...
|
||||
|
||||
For code that dispatches on a collections type (e.g., ``list``), but wants
|
||||
to typehint the items of the collection (e.g., ``list[int]``), the
|
||||
dispatch type should be passed explicitly to the decorator itself with the
|
||||
typehint going into the function definition::
|
||||
|
||||
>>> @fun.register(list)
|
||||
... def _(arg: list[int], verbose=False):
|
||||
... if verbose:
|
||||
... print("Enumerate this:")
|
||||
... for i, elem in enumerate(arg):
|
||||
... print(i, elem)
|
||||
|
||||
.. note::
|
||||
|
||||
At runtime the function will dispatch on an instance of a list regardless
|
||||
of the type contained within the list i.e. ``[1,2,3]`` will be
|
||||
dispatched the same as ``["foo", "bar", "baz"]``. The annotation
|
||||
provided in this example is for static type checkers only and has no
|
||||
runtime impact.
|
||||
|
||||
To enable registering :term:`lambdas<lambda>` and pre-existing functions,
|
||||
the :func:`register` attribute can also be used in a functional form::
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue