correct decorator example, tweak description slightly

This commit is contained in:
Skip Montanaro 2004-12-26 15:29:28 +00:00
parent 2eba0d6eb2
commit 9935e7fac0
1 changed files with 14 additions and 10 deletions

View File

@ -289,7 +289,9 @@ The \code{@classmethod} is shorthand for the
the following: the following:
\begin{verbatim} \begin{verbatim}
@A @B @C @A
@B
@C
def f (): def f ():
... ...
\end{verbatim} \end{verbatim}
@ -301,16 +303,18 @@ def f(): ...
f = A(B(C(f))) f = A(B(C(f)))
\end{verbatim} \end{verbatim}
Decorators must come on the line before a function definition, and Decorators must come on the line before a function definition, one decorator
can't be on the same line, meaning that \code{@A def f(): ...} is per line, and can't be on the same line as the def statement, meaning that
illegal. You can only decorate function definitions, either at the \code{@A def f(): ...} is illegal. You can only decorate function
module level or inside a class; you can't decorate class definitions. definitions, either at the module level or inside a class; you can't
decorate class definitions.
A decorator is just a function that takes the function to be decorated A decorator is just a function that takes the function to be decorated as an
as an argument and returns either the same function or some new argument and returns either the same function or some new object. The
callable thing. It's easy to write your own decorators. The return value of the decorator need not be callable (though it typically is),
following simple example just sets an attribute on the function unless further decorators will be applied to the result. It's easy to write
object: your own decorators. The following simple example just sets an attribute on
the function object:
\begin{verbatim} \begin{verbatim}
>>> def deco(func): >>> def deco(func):