[Python-Dev] PEP: Ordered Class Definition Namespace (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Tue Jun 7 19:12:15 EDT 2016


On 7 June 2016 at 16:03, Raymond Hettinger <raymond.hettinger at gmail.com> wrote:

On Jun 7, 2016, at 10:51 AM, Eric Snow <ericsnowcurrently at gmail.com> wrote:

This PEP changes the default class definition namespace to OrderedDict. I think this would be a nice improvement. Furthermore, the order in which the attributes are defined in each class body will now be preserved in type._definitionorder_. This allows introspection of the original definition order, e.g. by class decorators. I'm unclear on why this would be needed. Wouldn't the OrderedDict be sufficient for preserving definition order?

By the time decorators run, the original execution namespace is no longer available - the contents have been copied into the class dict, which will still be a plain dict (and there's a lot of code that calls PyDict_* APIs on tp_dict, so replacing the latter with a subclass is neither trivial nor particularly safe in the presence of extension modules).

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia



More information about the Python-Dev mailing list