Add class decorators
This commit is contained in:
parent
2e25551ef8
commit
d51e842a3f
|
@ -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
|
||||||
: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
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue