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

Miss Islington (bot) webhook-mailer at python.org
Fri Nov 16 06:51:23 EST 2018

commit: 1b80a373d104480c51cacb8b07ec3b61e21d5fa0
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018-11-16T03:51:20-08:00

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

(cherry picked from commit c2ccac7b9f9a1132ca36255b0ddfeecef4371aa3)

Co-authored-by: Andrés Delfino <adelfino at gmail.com>

M Doc/reference/datamodel.rst

diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index be9b3ad1af69..96e35744c8ae 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -1999,46 +1999,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