[Python-Dev] Decorator order implemented backwards?
Anthony Baxter
anthony at interlink.com.au
Tue Aug 10 07:00:27 CEST 2004
James Y Knight wrote:
> I haven't seen anyone remark upon this yet, but the order of decorator
> application appears to be implemented backwards.
>> def test_order(self):
>> class C(object):
>> @funcattrs(abc=1) @staticmethod
>> def foo(): return 42
>> # This wouldn't work if staticmethod was called first
>> self.assertEqual(C.foo(), 42)
>> self.assertEqual(C().foo(), 42)
How odd. I'm positive at one point I tested this and it was
the right way round.
>>> def dec1(x):
... print "dec1"
... return x
...
>>> def dec2(x):
... print "dec2"
... return x
...
>>>
>>> @dec1
... @dec2
... def foo(): pass
...
dec1
dec2
>>>
This is definitely wrong. Wrong wrong wrong.
Anthony
More information about the Python-Dev
mailing list