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.
This commit is contained in:
parent
1c56f8ffad
commit
fbe2e0bb8a
|
@ -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
|
is prepared. If the metaclass has a ``__prepare__`` attribute, it is called
|
||||||
as ``namespace = metaclass.__prepare__(name, bases, **kwds)`` (where the
|
as ``namespace = metaclass.__prepare__(name, bases, **kwds)`` (where the
|
||||||
additional keyword arguments, if any, come from the class definition). 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
|
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::
|
.. seealso::
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
The language reference now specifies restrictions on class namespaces. Adapted from a patch by Ethan Furman.
|
Loading…
Reference in New Issue