diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2016-09-05 14:50:11 -0700 |
---|---|---|
committer | Eric Snow <ericsnowcurrently@gmail.com> | 2016-09-05 14:50:11 -0700 |
commit | 92a6c170e6897ee98c36a3a9087b1a7d3e054d2b (patch) | |
tree | 59cbc717ac59e802529bc3ad4e61de161b66ac68 /Lib/types.py | |
parent | 45659861380a9cd9e41ea002d4de92519ffb3422 (diff) | |
download | cpython-git-92a6c170e6897ee98c36a3a9087b1a7d3e054d2b.tar.gz |
Issue #24254: Preserve class attribute definition order.
Diffstat (limited to 'Lib/types.py')
-rw-r--r-- | Lib/types.py | 5 |
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): |