[Python-Dev] method decorators (PEP 318)
Shane Holloway (IEEE)
shane.holloway at ieee.org
Tue Mar 30 01:16:04 EST 2004
Greg Ewing wrote:
> "Shane Holloway (IEEE)" <shane.holloway at ieee.org>:
>
>
>> def foo(self, *args) [methodreturns(float)] + IMyProtocolMethod:
>> pass # Code goes here
>
>
> Under the current proposal, that wouldn't be allowed.
> You'd need a helper function of some sort that turned
> a list of decorators into a single decorator:
>
> def foo(self, *args) [methodreturns(float),
> decoratorlist(IMyProtocolMethod)]:
>
> or, using the extension I proposed a while back,
>
> def foo(self, *args) [methodreturns(float), *IMyProtocolMethod]:
>
I think that reads the best, but then I'd start to want it with normal
lists, too. ;)
And I did think of the decoratorlist work-around, but I hadn't thought
that you could just as easily do the following:
class Example(object):
IMyProtocolMethod = decoratorlist(
synchronized(lock),
attributes(author='SWH', protocol=IMyProtocol),
myArgumentWireMarshaller)
def foo(self, *args) [methodreturns(float), IMyProtocolMethod]:
pass # Code goes here
def bar(self, *args) [methodreturns(str), IMyProtocolMethod]:
pass # Code goes here
def baz(self, *args) [methodreturns(int), IMyProtocolMethod]:
pass # Code goes here
Which makes me just as happy again. :) I hope you all had a good time
at PyCon. One of these years I look forward to meeting all of you.
Cheers,
-Shane Holloway
p.s. sorry for the repeat Greg ;)
More information about the Python-Dev
mailing list