[Python-Dev] Re: metaclass and author are already decorators (original) (raw)

Bob Ippolito bob at redivi.com
Sun Aug 22 01:11:12 CEST 2004


On Aug 21, 2004, at 6:54 PM, Paul Morrow wrote:

Bob Ippolito wrote:

On Aug 21, 2004, at 6:24 PM, Paul Morrow wrote:

It seems that writing a decorator is going to be a bizarre experience. In the example, I would need to write a function named 'decoration' that returns a function that will recieve a function (foo) to be decorated and then return a function. Does that sound about right? Yes that is correct. What would functions like 'decoration' typically look like? Could you show a short code snippet? http://python.org/peps/pep-0318.html Thanks. Of the 5 examples there, the first two are apparently not implemented correctly, as they expect that the function/class to be decorated is passed directly to them, rather than to the function they return. Would you agree? I pasted them here for your consideration...

No, they are correct. You are confused. What is expected is that the result of the expression after @ is callable and takes one parameter.
If the expression after @ is just a name, then nothing particularly exciting happens at that time.

@bar # NOTE THE LACK OF PARENTHESES def foo(): ....

is equivalent to:

_tmp = bar def foo(): .... foo = _tmp(foo)

_tmp = bar clearly doesn't do anything special

However, you're confusing that with examples that look more like:

@bar() # NOTE THE PARENTHESES def foo(): ....

which are equivalent to:

_tmp = bar() def foo(): .... foo = _tmp(foo)

-bob



More information about the Python-Dev mailing list