Kaydet (Commit) d51e842a authored tarafından Andrew M. Kuchling's avatar Andrew M. Kuchling

Add class decorators

üst 2e25551e
...@@ -50,6 +50,7 @@ Summarizing: ...@@ -50,6 +50,7 @@ Summarizing:
: | `with_stmt` : | `with_stmt`
: | `funcdef` : | `funcdef`
: | `classdef` : | `classdef`
: | `decorated`
suite: `stmt_list` NEWLINE | NEWLINE INDENT `statement`+ DEDENT suite: `stmt_list` NEWLINE | NEWLINE INDENT `statement`+ DEDENT
statement: `stmt_list` NEWLINE | `compound_stmt` statement: `stmt_list` NEWLINE | `compound_stmt`
stmt_list: `simple_stmt` (";" `simple_stmt`)* [";"] stmt_list: `simple_stmt` (";" `simple_stmt`)* [";"]
...@@ -400,9 +401,10 @@ A function definition defines a user-defined function object (see section ...@@ -400,9 +401,10 @@ A function definition defines a user-defined function object (see section
:ref:`types`): :ref:`types`):
.. productionlist:: .. productionlist::
funcdef: [`decorators`] "def" `funcname` "(" [`parameter_list`] ")" ":" `suite` decorated: decorators (classdef | funcdef)
decorators: `decorator`+ decorators: `decorator`+
decorator: "@" `dotted_name` ["(" [`argument_list` [","]] ")"] NEWLINE decorator: "@" `dotted_name` ["(" [`argument_list` [","]] ")"] NEWLINE
funcdef: "def" `funcname` "(" [`parameter_list`] ")" ":" `suite`
dotted_name: `identifier` ("." `identifier`)* dotted_name: `identifier` ("." `identifier`)*
parameter_list: (`defparameter` ",")* parameter_list: (`defparameter` ",")*
: ( "*" `identifier` [, "**" `identifier`] : ( "*" `identifier` [, "**" `identifier`]
...@@ -529,6 +531,11 @@ mutable values there can lead to unexpected results. For :term:`new-style ...@@ -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 class`\es, descriptors can be used to create instance variables with different
implementation details. 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 .. rubric:: Footnotes
.. [#] The exception is propagated to the invocation stack only if there is no .. [#] The exception is propagated to the invocation stack only if there is no
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment