]> granicus.if.org Git - python/commitdiff
Add class decorators
authorAndrew M. Kuchling <amk@amk.ca>
Thu, 13 Mar 2008 11:07:35 +0000 (11:07 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Thu, 13 Mar 2008 11:07:35 +0000 (11:07 +0000)
Doc/reference/compound_stmts.rst

index 076c28446a63048e98e79f0f6aa5d5e6a81c825b..be1d10e4a4902f67b0429551593d9e1cdca12a12 100644 (file)
@@ -50,6 +50,7 @@ Summarizing:
                 : | `with_stmt`
                 : | `funcdef`
                 : | `classdef`
+                : | `decorated`
    suite: `stmt_list` NEWLINE | NEWLINE INDENT `statement`+ DEDENT
    statement: `stmt_list` NEWLINE | `compound_stmt`
    stmt_list: `simple_stmt` (";" `simple_stmt`)* [";"]
@@ -400,9 +401,10 @@ A function definition defines a user-defined function object (see section
 :ref:`types`):
 
 .. productionlist::
-   funcdef: [`decorators`] "def" `funcname` "(" [`parameter_list`] ")" ":" `suite`
+   decorated: decorators (classdef | funcdef)
    decorators: `decorator`+
    decorator: "@" `dotted_name` ["(" [`argument_list` [","]] ")"] NEWLINE
+   funcdef: "def" `funcname` "(" [`parameter_list`] ")" ":" `suite`
    dotted_name: `identifier` ("." `identifier`)*
    parameter_list: (`defparameter` ",")*
                  : (  "*" `identifier` [, "**" `identifier`]
@@ -529,6 +531,11 @@ mutable values there can lead to unexpected results.  For :term:`new-style
 class`\es, descriptors can be used to create instance variables with different
 implementation details.
 
+Class definitions, like function definitions, may be wrapped by one or
+more :term:`decorator` expressions.  The evaluation rules for the
+decorator expressions are the same as for functions.  The result must
+be a class object, which is then bound to the class name.
+
 .. rubric:: Footnotes
 
 .. [#] The exception is propagated to the invocation stack only if there is no