[Python-Dev] PEP: Ordered Class Definition Namespace

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.__definition_order__``.  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