[Python-Dev] method decorators (PEP 318)
Skip Montanaro
skip at pobox.com
Sat Mar 27 13:26:41 EST 2004
Bernhard> Has somebody suggested the following yet?
Bernhard> def [classmethod] foo(cls, blooh, bla):
Bernhard> pass
Yeah, I believe it's come up.
Bernhard> Putting the decorators between the "def" and the function name
Bernhard> has some advantages over the proposals I've seen so far:
Bernhard> - crucial information about the function and the meaning of
Bernhard> the parameters is given very early (this was an argument
Bernhard> made for putting the decorat before the argument list)
I would propose a counterargument. Placing it between the argument list and
the colon puts it "close enough" to the "def". I did a quick grep through
the Python distribution just now and found 22198 function or method
definitions. Of those, 20282 had the name and the entire argument list on
the same line as the def keyword. That means in all but a small number of
cases decorators would start on the same line as the def keyword.
Bernhard> - The name and the argument are together, so it still looks
Bernhard> similar to the function invocation (an argument made for
Bernhard> putting the decorators after the function list).
Yes, but possibly several lines later, making it more difficult to find (you
couldn't reliably grep for "^ *def foo" to locate a function definition) and
forcing tools like the Emacs tags facility to be rewritten to handle the
case where "def" and the function name don't appear on the same line.
Skip
More information about the Python-Dev
mailing list