[Python-Dev] [Python-checkins] peps: Add PEP 422: Dynamic Class Decorators

PJ Eby pje at telecommunity.com
Tue Jun 5 20:26:10 CEST 2012


On Tue, Jun 5, 2012 at 12:42 PM, Terry Reedy <tjreedy at udel.edu> wrote:

> On 6/5/2012 8:09 AM, nick.coghlan wrote:
>
>    Add PEP 422: Dynamic Class Decorators
>>
>
>  +Iterating over decorator entries in reverse order
>> +-----------------------------**--------------------
>> +
>> +This order was chosen to match the layout of lexical decorators when
>> +converted to ordinary function calls. Just as the following are
>> equivalent::
>> +
>> +    @deco2
>> +    @deco1
>> +    class C:
>> +        pass
>> +
>> +    class C:
>> +        pass
>> +    C = deco2(deco1(C))
>> +
>> +So too will the following be roughly equivalent (aside from
>> inheritance)::
>> +
>> +    class C:
>> +        __decorators__ = [deco2, deco1]
>>
>
> I think you should just store the decorators in the correct order of use
> +        __decorators__ = [deco1, deco2]
> and avoid the nonsense (time-waste) of making an indirect copy via
> list_iterator and reversing it each time the attribute is used.
>

It's for symmetry and straightforward translation with stacked decorators,
i.e. between:

@deco1
@deco2
[declaration]

and __decorators__ = [deco1, deco2]

Doing it the other way now means a different order for people to remember;
there should be One Obvious Order for decorators, and the one we have now
is it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20120605/5637ec8b/attachment.html>


More information about the Python-Dev mailing list