[Python-Dev] Re: method decorators (PEP 318) (original) (raw)

Samuele Pedroni pedronis at bluewin.ch
Sun Mar 28 10:30:09 EST 2004


At 10:15 28.03.2004 -0500, Bob Ippolito wrote:

On Mar 28, 2004, at 9:45 AM, Phillip J. Eby wrote:

At 12:54 PM 3/28/04 +0100, Paul Moore wrote: Robert Mollitor <mollitor at earthlink.net> writes:

> It would be nice if transformer decorations were never allowed > "arguments". It would keep that list as short > and as tidy as possible. That's the sort of restriction I imagined that Guido was tending towards. While it's justifiable in this context, I would prefer to leave the option of using arguments available, in case someone comes up with a use where function attributes are inappropriate. It's inappropriate to use attributes of a function for attributes that logically belong to the decorator. For example 'synchronized(lockattr="baz")'. The 'lockattr' logically belongs to the synchronizing decoration. Declaring it in a separate location makes the whole thing harder to read/understand. Not to mention the fact that you'll have to start prefixing your function attributes so that you don't clash between decorators.. because of the flat namespace.

yes, in fact C# and Java use first class objects, namely in their case classes/interfaces to solve the naming problem.

A comparable approach in Python would be:

author = object() # may be imported from somewhere else

def foo(arg): @author: "fooauthor" # === foo.dict[author] = "fooauthor"

so @ syntax would be "@expr : expr" and not "@name : expr".



More information about the Python-Dev mailing list