[Python-Dev] [Python-checkins] peps: Add PEP 422: Dynamic Class Decorators (original) (raw)
Terry Reedy tjreedy at udel.edu
Tue Jun 5 18:42:38 CEST 2012
- Previous message: [Python-Dev] [Python-checkins] cpython: Fix potential NameError in multiprocessing.Condition.wait()
- Next message: [Python-Dev] [Python-checkins] peps: Add PEP 422: Dynamic Class Decorators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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.
If the list is constructed in reversed order, immediately reverse it.
+ + class C: + pass + C = deco2(deco1(C))
Terry Jan Reedy
- Previous message: [Python-Dev] [Python-checkins] cpython: Fix potential NameError in multiprocessing.Condition.wait()
- Next message: [Python-Dev] [Python-checkins] peps: Add PEP 422: Dynamic Class Decorators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]