[Python-checkins] bpo-33816: Remove outdated metaclass example (GH-7566)

INADA Naoki webhook-mailer at python.org
Fri Nov 16 06:42:04 EST 2018

commit: c2ccac7b9f9a1132ca36255b0ddfeecef4371aa3
branch: master
author: Andrés Delfino <adelfino at gmail.com>
committer: INADA Naoki <methane at users.noreply.github.com>
date: 2018-11-16T20:41:55+09:00

bpo-33816: Remove outdated metaclass example (GH-7566)

M Doc/reference/datamodel.rst

diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index 24c647d1a8d2..79fde4bdc792 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -1998,46 +1998,14 @@ becomes the :attr:`~object.__dict__` attribute of the class object.
       Describes the implicit ``__class__`` closure reference
-Metaclass example
+Uses for metaclasses
 The potential uses for metaclasses are boundless. Some ideas that have been
 explored include enum, logging, interface checking, automatic delegation,
 automatic property creation, proxies, frameworks, and automatic resource
-Here is an example of a metaclass that uses an :class:`collections.OrderedDict`
-to remember the order that class variables are defined::
-    class OrderedClass(type):
-        @classmethod
-        def __prepare__(metacls, name, bases, **kwds):
-            return collections.OrderedDict()
-        def __new__(cls, name, bases, namespace, **kwds):
-            result = type.__new__(cls, name, bases, dict(namespace))
-            result.members = tuple(namespace)
-            return result
-    class A(metaclass=OrderedClass):
-        def one(self): pass
-        def two(self): pass
-        def three(self): pass
-        def four(self): pass
-    >>> A.members
-    ('__module__', 'one', 'two', 'three', 'four')
-When the class definition for *A* gets executed, the process begins with
-calling the metaclass's :meth:`__prepare__` method which returns an empty
-:class:`collections.OrderedDict`.  That mapping records the methods and
-attributes of *A* as they are defined within the body of the class statement.
-Once those definitions are executed, the ordered dictionary is fully populated
-and the metaclass's :meth:`__new__` method gets invoked.  That method builds
-the new type and it saves the ordered dictionary keys in an attribute
-called ``members``.
 Customizing instance and subclass checks

More information about the Python-checkins mailing list