summaryrefslogtreecommitdiff
path: root/Lib/types.py
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2016-09-05 14:50:11 -0700
committerEric Snow <ericsnowcurrently@gmail.com>2016-09-05 14:50:11 -0700
commit92a6c170e6897ee98c36a3a9087b1a7d3e054d2b (patch)
tree59cbc717ac59e802529bc3ad4e61de161b66ac68 /Lib/types.py
parent45659861380a9cd9e41ea002d4de92519ffb3422 (diff)
downloadcpython-git-92a6c170e6897ee98c36a3a9087b1a7d3e054d2b.tar.gz
Issue #24254: Preserve class attribute definition order.
Diffstat (limited to 'Lib/types.py')
-rw-r--r--Lib/types.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/Lib/types.py b/Lib/types.py
index 48891cd3f6..cc093cb403 100644
--- a/Lib/types.py
+++ b/Lib/types.py
@@ -25,8 +25,11 @@ CoroutineType = type(_c)
_c.close() # Prevent ResourceWarning
class _C:
+ _nsType = type(locals())
def _m(self): pass
MethodType = type(_C()._m)
+# In CPython, this should end up as OrderedDict.
+_DefaultClassNamespaceType = _C._nsType
BuiltinFunctionType = type(len)
BuiltinMethodType = type([].append) # Same as BuiltinFunctionType
@@ -85,7 +88,7 @@ def prepare_class(name, bases=(), kwds=None):
if hasattr(meta, '__prepare__'):
ns = meta.__prepare__(name, bases, **kwds)
else:
- ns = {}
+ ns = _DefaultClassNamespaceType()
return meta, ns, kwds
def _calculate_meta(meta, bases):