summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Doc/library/functools.rst14
-rw-r--r--Misc/NEWS.d/next/Documentation/2019-11-17-11-54-57.bpo-21767.Qq3Dos.rst1
2 files changed, 15 insertions, 0 deletions
diff --git a/Doc/library/functools.rst b/Doc/library/functools.rst
index cedc3ad5ec..bb7aac42da 100644
--- a/Doc/library/functools.rst
+++ b/Doc/library/functools.rst
@@ -423,6 +423,20 @@ The :mod:`functools` module defines the following functions:
for the base ``object`` type, which means it is used if no better
implementation is found.
+ If an implementation registered to :term:`abstract base class`, virtual
+ subclasses will be dispatched to that implementation::
+
+ >>> from collections.abc import Mapping
+ >>> @fun.register
+ ... def _(arg: Mapping, verbose=False):
+ ... if verbose:
+ ... print("Keys & Values")
+ ... for key, value in arg.items():
+ ... print(key, "=>", value)
+ ...
+ >>> fun({"a": "b"})
+ a => b
+
To check which implementation will the generic function choose for
a given type, use the ``dispatch()`` attribute::
diff --git a/Misc/NEWS.d/next/Documentation/2019-11-17-11-54-57.bpo-21767.Qq3Dos.rst b/Misc/NEWS.d/next/Documentation/2019-11-17-11-54-57.bpo-21767.Qq3Dos.rst
new file mode 100644
index 0000000000..1e2a45e111
--- /dev/null
+++ b/Misc/NEWS.d/next/Documentation/2019-11-17-11-54-57.bpo-21767.Qq3Dos.rst
@@ -0,0 +1 @@
+Explicitly mention abc support in functools.singledispatch