From d51e842a3ff325730ff93a8c9ad22b1d3bdf77e2 Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Thu, 13 Mar 2008 11:07:35 +0000 Subject: [PATCH] Add class decorators --- Doc/reference/compound_stmts.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index 076c28446a6..be1d10e4a49 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -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