[Python-Dev] Decorators: vertical bar syntax

Guido van Rossum guido at python.org
Mon Aug 9 17:04:47 CEST 2004


[Guido]
> > In the discussion on decorators months ago, solutions involving
> > special syntax inside the block were ruled out early on.  Basically,
> > you shouldn't have to peek inside the block to find out important
> > external properties of the function.

[Bill Janssen]
> Guido, could you expand on this principle a bit?  Just stated as it
> is, it sounds as pointless (to my untutored mind, at least :-), as the
> arguments about "@ is ugly, so it shouldn't be used".  After all,
> isn't "what the function does" an important external property of the
> function, and don't you have to peek inside the block to determine
> that?  For instance, how do you know whether a function is a generator
> unless you look for yield statements inside it?

It's probably untenable as a formal principle. :-)

Nevertheless I don't like to put decorators in the method body.  I
think it has something to do with the fact that normally one thinks of
the body contents as relevalt to "call-time" while decorators happen
at "definition-time".

And before you bring up docstrings as a counterexample, yes, they
should ideally have been designed to precede the method, too.

--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list