summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorananthan-123 <ananthakrishnan15.2001@gmail.com>2020-02-22 23:26:02 +0530
committerGitHub <noreply@github.com>2020-02-22 09:56:01 -0800
commitfbe2e0bb8a7ee75d0f9d57682436dac7d69e202e (patch)
tree2cdc2bba10976757f959974332b95c619e61d2d1
parent1c56f8ffad44478b4214a2bf8eb7cf51c28a347a (diff)
downloadcpython-git-fbe2e0bb8a7ee75d0f9d57682436dac7d69e202e.tar.gz
bpo-17422: Language reference should specify restrictions on class namespace (#18559)
The language reference now specifies restrictions on class namespaces. Adapted from a patch by Ethan Furman.
-rw-r--r--Doc/reference/datamodel.rst6
-rw-r--r--Misc/NEWS.d/next/Documentation/2020-02-19-11-13-47.bpo-17422.g7_9zz.rst1
2 files changed, 5 insertions, 2 deletions
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index 9520f82428..5b3b669c5e 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -1946,10 +1946,12 @@ Once the appropriate metaclass has been identified, then the class namespace
is prepared. If the metaclass has a ``__prepare__`` attribute, it is called
as ``namespace = metaclass.__prepare__(name, bases, **kwds)`` (where the
additional keyword arguments, if any, come from the class definition). The
-``__prepare__`` method should be implemented as a :func:`classmethod`.
+``__prepare__`` method should be implemented as a :func:`classmethod`. The
+namespace returned by ``__prepare__`` is passed in to ``__new__``, but when
+the final class object is created the namespace is copied into a new ``dict``.
If the metaclass has no ``__prepare__`` attribute, then the class namespace
-is initialised as an empty ordered mapping.
+is initialised as an empty :func:`dict`.
.. seealso::
diff --git a/Misc/NEWS.d/next/Documentation/2020-02-19-11-13-47.bpo-17422.g7_9zz.rst b/Misc/NEWS.d/next/Documentation/2020-02-19-11-13-47.bpo-17422.g7_9zz.rst
new file mode 100644
index 0000000000..f071d28617
--- /dev/null
+++ b/Misc/NEWS.d/next/Documentation/2020-02-19-11-13-47.bpo-17422.g7_9zz.rst
@@ -0,0 +1 @@
+The language reference now specifies restrictions on class namespaces. Adapted from a patch by Ethan Furman.