[Python-Dev] (Specific syntax of) PEP 318 decoration (original) (raw)

[Python-Dev] (Specific syntax of) PEP 318 - function/method/class decoration

Gareth McCaughan gmccaughan at synaptics-uk.com
Tue Mar 9 04:42:42 EST 2004


On Monday 2004-03-08 18:48, Phillip J. Eby wrote:

Anyway, I seem to recall that the bracketed syntax was originally inspired by C#'s attribute mechanism, but you'd have to ask the original author to be sure.

I think I was the first to propose the bracketed syntax (in <slrna40k88.2h9o.Gareth.McCaughan at g.local>, after Tim Peters pointed out a problem with a different syntax I'd proposed for the same purpose in <slrna3va8t.2a7p.Gareth.McCaughan at g.local>. The proposal certainly wasn't in the least inspired by C#'s attribute mechanism; I'd never even seen it then. For what it's worth, I still have a strong preference for the original "def f(args) [decorators]:" syntax, despite Guido's preference for "def f [decorators] (args):".

The problem Tim pointed out was that the first-proposed syntax

def staticmethod f(args): ...

would confuse over-simple ad hoc parsers (in text editors, code munging tools, etc.) into thinking that the above was defining a function or method called "staticmethod". A similar, but (much?) less severe, problem may attend the syntax that just moves the decorator-spec to before the argument list. I suspect this isn't serious enough to count as a real objection.

-- g



More information about the Python-Dev mailing list