~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Doc/reference/compound_stmts.rst

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
ImportĀ upstreamĀ versionĀ 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
.. _compound:
 
3
 
 
4
*******************
 
5
Compound statements
 
6
*******************
 
7
 
 
8
.. index:: pair: compound; statement
 
9
 
 
10
Compound statements contain (groups of) other statements; they affect or control
 
11
the execution of those other statements in some way.  In general, compound
 
12
statements span multiple lines, although in simple incarnations a whole compound
 
13
statement may be contained in one line.
 
14
 
 
15
The :keyword:`if`, :keyword:`while` and :keyword:`for` statements implement
 
16
traditional control flow constructs.  :keyword:`try` specifies exception
 
17
handlers and/or cleanup code for a group of statements.  Function and class
 
18
definitions are also syntactically compound statements.
 
19
 
 
20
.. index::
 
21
   single: clause
 
22
   single: suite
 
23
 
 
24
Compound statements consist of one or more 'clauses.'  A clause consists of a
 
25
header and a 'suite.'  The clause headers of a particular compound statement are
 
26
all at the same indentation level. Each clause header begins with a uniquely
 
27
identifying keyword and ends with a colon.  A suite is a group of statements
 
28
controlled by a clause.  A suite can be one or more semicolon-separated simple
 
29
statements on the same line as the header, following the header's colon, or it
 
30
can be one or more indented statements on subsequent lines.  Only the latter
 
31
form of suite can contain nested compound statements; the following is illegal,
 
32
mostly because it wouldn't be clear to which :keyword:`if` clause a following
 
33
:keyword:`else` clause would belong:   ::
 
34
 
 
35
   if test1: if test2: print x
 
36
 
 
37
Also note that the semicolon binds tighter than the colon in this context, so
 
38
that in the following example, either all or none of the :keyword:`print`
 
39
statements are executed::
 
40
 
 
41
   if x < y < z: print x; print y; print z
 
42
 
 
43
Summarizing:
 
44
 
 
45
.. productionlist::
 
46
   compound_stmt: `if_stmt`
 
47
                : | `while_stmt`
 
48
                : | `for_stmt`
 
49
                : | `try_stmt`
 
50
                : | `with_stmt`
 
51
                : | `funcdef`
 
52
                : | `classdef`
 
53
                : | `decorated`
 
54
   suite: `stmt_list` NEWLINE | NEWLINE INDENT `statement`+ DEDENT
 
55
   statement: `stmt_list` NEWLINE | `compound_stmt`
 
56
   stmt_list: `simple_stmt` (";" `simple_stmt`)* [";"]
 
57
 
 
58
.. index::
 
59
   single: NEWLINE token
 
60
   single: DEDENT token
 
61
   pair: dangling; else
 
62
 
 
63
Note that statements always end in a ``NEWLINE`` possibly followed by a
 
64
``DEDENT``. Also note that optional continuation clauses always begin with a
 
65
keyword that cannot start a statement, thus there are no ambiguities (the
 
66
'dangling :keyword:`else`' problem is solved in Python by requiring nested
 
67
:keyword:`if` statements to be indented).
 
68
 
 
69
The formatting of the grammar rules in the following sections places each clause
 
70
on a separate line for clarity.
 
71
 
 
72
 
 
73
.. _if:
 
74
.. _elif:
 
75
.. _else:
 
76
 
 
77
The :keyword:`if` statement
 
78
===========================
 
79
 
 
80
.. index::
 
81
   statement: if
 
82
   keyword: elif
 
83
   keyword: else
 
84
 
 
85
The :keyword:`if` statement is used for conditional execution:
 
86
 
 
87
.. productionlist::
 
88
   if_stmt: "if" `expression` ":" `suite`
 
89
          : ( "elif" `expression` ":" `suite` )*
 
90
          : ["else" ":" `suite`]
 
91
 
 
92
It selects exactly one of the suites by evaluating the expressions one by one
 
93
until one is found to be true (see section :ref:`booleans` for the definition of
 
94
true and false); then that suite is executed (and no other part of the
 
95
:keyword:`if` statement is executed or evaluated).  If all expressions are
 
96
false, the suite of the :keyword:`else` clause, if present, is executed.
 
97
 
 
98
 
 
99
.. _while:
 
100
 
 
101
The :keyword:`while` statement
 
102
==============================
 
103
 
 
104
.. index::
 
105
   statement: while
 
106
   pair: loop; statement
 
107
   keyword: else
 
108
 
 
109
The :keyword:`while` statement is used for repeated execution as long as an
 
110
expression is true:
 
111
 
 
112
.. productionlist::
 
113
   while_stmt: "while" `expression` ":" `suite`
 
114
             : ["else" ":" `suite`]
 
115
 
 
116
This repeatedly tests the expression and, if it is true, executes the first
 
117
suite; if the expression is false (which may be the first time it is tested) the
 
118
suite of the :keyword:`else` clause, if present, is executed and the loop
 
119
terminates.
 
120
 
 
121
.. index::
 
122
   statement: break
 
123
   statement: continue
 
124
 
 
125
A :keyword:`break` statement executed in the first suite terminates the loop
 
126
without executing the :keyword:`else` clause's suite.  A :keyword:`continue`
 
127
statement executed in the first suite skips the rest of the suite and goes back
 
128
to testing the expression.
 
129
 
 
130
 
 
131
.. _for:
 
132
 
 
133
The :keyword:`for` statement
 
134
============================
 
135
 
 
136
.. index::
 
137
   statement: for
 
138
   pair: loop; statement
 
139
   keyword: in
 
140
   keyword: else
 
141
   pair: target; list
 
142
   object: sequence
 
143
 
 
144
The :keyword:`for` statement is used to iterate over the elements of a sequence
 
145
(such as a string, tuple or list) or other iterable object:
 
146
 
 
147
.. productionlist::
 
148
   for_stmt: "for" `target_list` "in" `expression_list` ":" `suite`
 
149
           : ["else" ":" `suite`]
 
150
 
 
151
The expression list is evaluated once; it should yield an iterable object.  An
 
152
iterator is created for the result of the ``expression_list``.  The suite is
 
153
then executed once for each item provided by the iterator, in the order of
 
154
ascending indices.  Each item in turn is assigned to the target list using the
 
155
standard rules for assignments, and then the suite is executed.  When the items
 
156
are exhausted (which is immediately when the sequence is empty), the suite in
 
157
the :keyword:`else` clause, if present, is executed, and the loop terminates.
 
158
 
 
159
.. index::
 
160
   statement: break
 
161
   statement: continue
 
162
 
 
163
A :keyword:`break` statement executed in the first suite terminates the loop
 
164
without executing the :keyword:`else` clause's suite.  A :keyword:`continue`
 
165
statement executed in the first suite skips the rest of the suite and continues
 
166
with the next item, or with the :keyword:`else` clause if there was no next
 
167
item.
 
168
 
 
169
The suite may assign to the variable(s) in the target list; this does not affect
 
170
the next item assigned to it.
 
171
 
 
172
.. index::
 
173
   builtin: range
 
174
   pair: Pascal; language
 
175
 
 
176
The target list is not deleted when the loop is finished, but if the sequence is
 
177
empty, it will not have been assigned to at all by the loop.  Hint: the built-in
 
178
function :func:`range` returns a sequence of integers suitable to emulate the
 
179
effect of Pascal's ``for i := a to b do``; e.g., ``range(3)`` returns the list
 
180
``[0, 1, 2]``.
 
181
 
 
182
.. warning::
 
183
 
 
184
   .. index::
 
185
      single: loop; over mutable sequence
 
186
      single: mutable sequence; loop over
 
187
 
 
188
   There is a subtlety when the sequence is being modified by the loop (this can
 
189
   only occur for mutable sequences, i.e. lists). An internal counter is used to
 
190
   keep track of which item is used next, and this is incremented on each
 
191
   iteration.  When this counter has reached the length of the sequence the loop
 
192
   terminates.  This means that if the suite deletes the current (or a previous)
 
193
   item from the sequence, the next item will be skipped (since it gets the index
 
194
   of the current item which has already been treated).  Likewise, if the suite
 
195
   inserts an item in the sequence before the current item, the current item will
 
196
   be treated again the next time through the loop. This can lead to nasty bugs
 
197
   that can be avoided by making a temporary copy using a slice of the whole
 
198
   sequence, e.g.,
 
199
 
 
200
::
 
201
 
 
202
   for x in a[:]:
 
203
       if x < 0: a.remove(x)
 
204
 
 
205
 
 
206
.. _try:
 
207
.. _except:
 
208
.. _finally:
 
209
 
 
210
The :keyword:`try` statement
 
211
============================
 
212
 
 
213
.. index::
 
214
   statement: try
 
215
   keyword: except
 
216
   keyword: finally
 
217
 
 
218
The :keyword:`try` statement specifies exception handlers and/or cleanup code
 
219
for a group of statements:
 
220
 
 
221
.. productionlist::
 
222
   try_stmt: try1_stmt | try2_stmt
 
223
   try1_stmt: "try" ":" `suite`
 
224
            : ("except" [`expression` [("as" | ",") `target`]] ":" `suite`)+
 
225
            : ["else" ":" `suite`]
 
226
            : ["finally" ":" `suite`]
 
227
   try2_stmt: "try" ":" `suite`
 
228
            : "finally" ":" `suite`
 
229
 
 
230
.. versionchanged:: 2.5
 
231
   In previous versions of Python, :keyword:`try`...\ :keyword:`except`...\
 
232
   :keyword:`finally` did not work. :keyword:`try`...\ :keyword:`except` had to be
 
233
   nested in :keyword:`try`...\ :keyword:`finally`.
 
234
 
 
235
The :keyword:`except` clause(s) specify one or more exception handlers. When no
 
236
exception occurs in the :keyword:`try` clause, no exception handler is executed.
 
237
When an exception occurs in the :keyword:`try` suite, a search for an exception
 
238
handler is started.  This search inspects the except clauses in turn until one
 
239
is found that matches the exception.  An expression-less except clause, if
 
240
present, must be last; it matches any exception.  For an except clause with an
 
241
expression, that expression is evaluated, and the clause matches the exception
 
242
if the resulting object is "compatible" with the exception.  An object is
 
243
compatible with an exception if it is the class or a base class of the exception
 
244
object, a tuple containing an item compatible with the exception, or, in the
 
245
(deprecated) case of string exceptions, is the raised string itself (note that
 
246
the object identities must match, i.e. it must be the same string object, not
 
247
just a string with the same value).
 
248
 
 
249
If no except clause matches the exception, the search for an exception handler
 
250
continues in the surrounding code and on the invocation stack.  [#]_
 
251
 
 
252
If the evaluation of an expression in the header of an except clause raises an
 
253
exception, the original search for a handler is canceled and a search starts for
 
254
the new exception in the surrounding code and on the call stack (it is treated
 
255
as if the entire :keyword:`try` statement raised the exception).
 
256
 
 
257
When a matching except clause is found, the exception is assigned to the target
 
258
specified in that except clause, if present, and the except clause's suite is
 
259
executed.  All except clauses must have an executable block.  When the end of
 
260
this block is reached, execution continues normally after the entire try
 
261
statement.  (This means that if two nested handlers exist for the same
 
262
exception, and the exception occurs in the try clause of the inner handler, the
 
263
outer handler will not handle the exception.)
 
264
 
 
265
.. index::
 
266
   module: sys
 
267
   object: traceback
 
268
   single: exc_type (in module sys)
 
269
   single: exc_value (in module sys)
 
270
   single: exc_traceback (in module sys)
 
271
 
 
272
Before an except clause's suite is executed, details about the exception are
 
273
assigned to three variables in the :mod:`sys` module: ``sys.exc_type`` receives
 
274
the object identifying the exception; ``sys.exc_value`` receives the exception's
 
275
parameter; ``sys.exc_traceback`` receives a traceback object (see section
 
276
:ref:`types`) identifying the point in the program where the exception
 
277
occurred. These details are also available through the :func:`sys.exc_info`
 
278
function, which returns a tuple ``(exc_type, exc_value, exc_traceback)``.  Use
 
279
of the corresponding variables is deprecated in favor of this function, since
 
280
their use is unsafe in a threaded program.  As of Python 1.5, the variables are
 
281
restored to their previous values (before the call) when returning from a
 
282
function that handled an exception.
 
283
 
 
284
.. index::
 
285
   keyword: else
 
286
   statement: return
 
287
   statement: break
 
288
   statement: continue
 
289
 
 
290
The optional :keyword:`else` clause is executed if and when control flows off
 
291
the end of the :keyword:`try` clause. [#]_ Exceptions in the :keyword:`else`
 
292
clause are not handled by the preceding :keyword:`except` clauses.
 
293
 
 
294
.. index:: keyword: finally
 
295
 
 
296
If :keyword:`finally` is present, it specifies a 'cleanup' handler.  The
 
297
:keyword:`try` clause is executed, including any :keyword:`except` and
 
298
:keyword:`else` clauses.  If an exception occurs in any of the clauses and is
 
299
not handled, the exception is temporarily saved. The :keyword:`finally` clause
 
300
is executed.  If there is a saved exception, it is re-raised at the end of the
 
301
:keyword:`finally` clause. If the :keyword:`finally` clause raises another
 
302
exception or executes a :keyword:`return` or :keyword:`break` statement, the
 
303
saved exception is lost.  The exception information is not available to the
 
304
program during execution of the :keyword:`finally` clause.
 
305
 
 
306
.. index::
 
307
   statement: return
 
308
   statement: break
 
309
   statement: continue
 
310
 
 
311
When a :keyword:`return`, :keyword:`break` or :keyword:`continue` statement is
 
312
executed in the :keyword:`try` suite of a :keyword:`try`...\ :keyword:`finally`
 
313
statement, the :keyword:`finally` clause is also executed 'on the way out.' A
 
314
:keyword:`continue` statement is illegal in the :keyword:`finally` clause. (The
 
315
reason is a problem with the current implementation --- this restriction may be
 
316
lifted in the future).
 
317
 
 
318
Additional information on exceptions can be found in section :ref:`exceptions`,
 
319
and information on using the :keyword:`raise` statement to generate exceptions
 
320
may be found in section :ref:`raise`.
 
321
 
 
322
 
 
323
.. _with:
 
324
.. _as:
 
325
 
 
326
The :keyword:`with` statement
 
327
=============================
 
328
 
 
329
.. index:: statement: with
 
330
 
 
331
.. versionadded:: 2.5
 
332
 
 
333
The :keyword:`with` statement is used to wrap the execution of a block with
 
334
methods defined by a context manager (see section :ref:`context-managers`). This
 
335
allows common :keyword:`try`...\ :keyword:`except`...\ :keyword:`finally` usage
 
336
patterns to be encapsulated for convenient reuse.
 
337
 
 
338
.. productionlist::
 
339
   with_stmt: "with" `expression` ["as" `target`] ":" `suite`
 
340
 
 
341
The execution of the :keyword:`with` statement proceeds as follows:
 
342
 
 
343
#. The context expression is evaluated to obtain a context manager.
 
344
 
 
345
#. The context manager's :meth:`__enter__` method is invoked.
 
346
 
 
347
#. If a target was included in the :keyword:`with` statement, the return value
 
348
   from :meth:`__enter__` is assigned to it.
 
349
 
 
350
   .. note::
 
351
 
 
352
      The :keyword:`with` statement guarantees that if the :meth:`__enter__` method
 
353
      returns without an error, then :meth:`__exit__` will always be called. Thus, if
 
354
      an error occurs during the assignment to the target list, it will be treated the
 
355
      same as an error occurring within the suite would be. See step 5 below.
 
356
 
 
357
#. The suite is executed.
 
358
 
 
359
#. The context manager's :meth:`__exit__` method is invoked. If an exception
 
360
   caused the suite to be exited, its type, value, and traceback are passed as
 
361
   arguments to :meth:`__exit__`. Otherwise, three :const:`None` arguments are
 
362
   supplied.
 
363
 
 
364
   If the suite was exited due to an exception, and the return value from the
 
365
   :meth:`__exit__` method was false, the exception is reraised. If the return
 
366
   value was true, the exception is suppressed, and execution continues with the
 
367
   statement following the :keyword:`with` statement.
 
368
 
 
369
   If the suite was exited for any reason other than an exception, the return value
 
370
   from :meth:`__exit__` is ignored, and execution proceeds at the normal location
 
371
   for the kind of exit that was taken.
 
372
 
 
373
.. note::
 
374
 
 
375
   In Python 2.5, the :keyword:`with` statement is only allowed when the
 
376
   ``with_statement`` feature has been enabled.  It is always enabled in
 
377
   Python 2.6.
 
378
 
 
379
.. seealso::
 
380
 
 
381
   :pep:`0343` - The "with" statement
 
382
      The specification, background, and examples for the Python :keyword:`with`
 
383
      statement.
 
384
 
 
385
 
 
386
.. _function:
 
387
.. _def:
 
388
 
 
389
Function definitions
 
390
====================
 
391
 
 
392
.. index::
 
393
   statement: def
 
394
   pair: function; definition
 
395
   pair: function; name
 
396
   pair: name; binding
 
397
   object: user-defined function
 
398
   object: function
 
399
 
 
400
A function definition defines a user-defined function object (see section
 
401
:ref:`types`):
 
402
 
 
403
.. productionlist::
 
404
   decorated: decorators (classdef | funcdef)
 
405
   decorators: `decorator`+
 
406
   decorator: "@" `dotted_name` ["(" [`argument_list` [","]] ")"] NEWLINE
 
407
   funcdef: "def" `funcname` "(" [`parameter_list`] ")" ":" `suite`
 
408
   dotted_name: `identifier` ("." `identifier`)*
 
409
   parameter_list: (`defparameter` ",")*
 
410
                 : (  "*" `identifier` [, "**" `identifier`]
 
411
                 : | "**" `identifier`
 
412
                 : | `defparameter` [","] )
 
413
   defparameter: `parameter` ["=" `expression`]
 
414
   sublist: `parameter` ("," `parameter`)* [","]
 
415
   parameter: `identifier` | "(" `sublist` ")"
 
416
   funcname: `identifier`
 
417
 
 
418
A function definition is an executable statement.  Its execution binds the
 
419
function name in the current local namespace to a function object (a wrapper
 
420
around the executable code for the function).  This function object contains a
 
421
reference to the current global namespace as the global namespace to be used
 
422
when the function is called.
 
423
 
 
424
The function definition does not execute the function body; this gets executed
 
425
only when the function is called. [#]_
 
426
 
 
427
.. index::
 
428
  statement: @
 
429
 
 
430
A function definition may be wrapped by one or more :term:`decorator` expressions.
 
431
Decorator expressions are evaluated when the function is defined, in the scope
 
432
that contains the function definition.  The result must be a callable, which is
 
433
invoked with the function object as the only argument. The returned value is
 
434
bound to the function name instead of the function object.  Multiple decorators
 
435
are applied in nested fashion. For example, the following code::
 
436
 
 
437
   @f1(arg)
 
438
   @f2
 
439
   def func(): pass
 
440
 
 
441
is equivalent to::
 
442
 
 
443
   def func(): pass
 
444
   func = f1(arg)(f2(func))
 
445
 
 
446
.. index:: triple: default; parameter; value
 
447
 
 
448
When one or more top-level parameters have the form *parameter* ``=``
 
449
*expression*, the function is said to have "default parameter values."  For a
 
450
parameter with a default value, the corresponding argument may be omitted from a
 
451
call, in which case the parameter's default value is substituted.  If a
 
452
parameter has a default value, all following parameters must also have a default
 
453
value --- this is a syntactic restriction that is not expressed by the grammar.
 
454
 
 
455
**Default parameter values are evaluated when the function definition is
 
456
executed.**  This means that the expression is evaluated once, when the function
 
457
is defined, and that that same "pre-computed" value is used for each call.  This
 
458
is especially important to understand when a default parameter is a mutable
 
459
object, such as a list or a dictionary: if the function modifies the object
 
460
(e.g. by appending an item to a list), the default value is in effect modified.
 
461
This is generally not what was intended.  A way around this  is to use ``None``
 
462
as the default, and explicitly test for it in the body of the function, e.g.::
 
463
 
 
464
   def whats_on_the_telly(penguin=None):
 
465
       if penguin is None:
 
466
           penguin = []
 
467
       penguin.append("property of the zoo")
 
468
       return penguin
 
469
 
 
470
.. index::
 
471
  statement: *
 
472
  statement: **
 
473
 
 
474
Function call semantics are described in more detail in section :ref:`calls`. A
 
475
function call always assigns values to all parameters mentioned in the parameter
 
476
list, either from position arguments, from keyword arguments, or from default
 
477
values.  If the form "``*identifier``" is present, it is initialized to a tuple
 
478
receiving any excess positional parameters, defaulting to the empty tuple.  If
 
479
the form "``**identifier``" is present, it is initialized to a new dictionary
 
480
receiving any excess keyword arguments, defaulting to a new empty dictionary.
 
481
 
 
482
.. index:: pair: lambda; form
 
483
 
 
484
It is also possible to create anonymous functions (functions not bound to a
 
485
name), for immediate use in expressions.  This uses lambda forms, described in
 
486
section :ref:`lambda`.  Note that the lambda form is merely a shorthand for a
 
487
simplified function definition; a function defined in a ":keyword:`def`"
 
488
statement can be passed around or assigned to another name just like a function
 
489
defined by a lambda form.  The ":keyword:`def`" form is actually more powerful
 
490
since it allows the execution of multiple statements.
 
491
 
 
492
**Programmer's note:** Functions are first-class objects.  A "``def``" form
 
493
executed inside a function definition defines a local function that can be
 
494
returned or passed around.  Free variables used in the nested function can
 
495
access the local variables of the function containing the def.  See section
 
496
:ref:`naming` for details.
 
497
 
 
498
 
 
499
.. _class:
 
500
 
 
501
Class definitions
 
502
=================
 
503
 
 
504
.. index::
 
505
   object: class
 
506
   statement: class
 
507
   pair: class; definition
 
508
   pair: class; name
 
509
   pair: name; binding
 
510
   pair: execution; frame
 
511
   single: inheritance
 
512
   single: docstring
 
513
 
 
514
A class definition defines a class object (see section :ref:`types`):
 
515
 
 
516
.. productionlist::
 
517
   classdef: "class" `classname` [`inheritance`] ":" `suite`
 
518
   inheritance: "(" [`expression_list`] ")"
 
519
   classname: `identifier`
 
520
 
 
521
A class definition is an executable statement.  It first evaluates the
 
522
inheritance list, if present.  Each item in the inheritance list should evaluate
 
523
to a class object or class type which allows subclassing.  The class's suite is
 
524
then executed in a new execution frame (see section :ref:`naming`), using a
 
525
newly created local namespace and the original global namespace. (Usually, the
 
526
suite contains only function definitions.)  When the class's suite finishes
 
527
execution, its execution frame is discarded but its local namespace is
 
528
saved. [#]_ A class object is then created using the inheritance list for the
 
529
base classes and the saved local namespace for the attribute dictionary.  The
 
530
class name is bound to this class object in the original local namespace.
 
531
 
 
532
**Programmer's note:** Variables defined in the class definition are class
 
533
variables; they are shared by all instances.  To create instance variables, they
 
534
can be set in a method with ``self.name = value``.  Both class and instance
 
535
variables are accessible through the notation "``self.name``", and an instance
 
536
variable hides a class variable with the same name when accessed in this way.
 
537
Class variables can be used as defaults for instance variables, but using
 
538
mutable values there can lead to unexpected results.  For :term:`new-style
 
539
class`\es, descriptors can be used to create instance variables with different
 
540
implementation details.
 
541
 
 
542
Class definitions, like function definitions, may be wrapped by one or more
 
543
:term:`decorator` expressions.  The evaluation rules for the decorator
 
544
expressions are the same as for functions.  The result must be a class object,
 
545
which is then bound to the class name.
 
546
 
 
547
.. rubric:: Footnotes
 
548
 
 
549
.. [#] The exception is propagated to the invocation stack only if there is no
 
550
   :keyword:`finally` clause that negates the exception.
 
551
 
 
552
.. [#] Currently, control "flows off the end" except in the case of an exception or the
 
553
   execution of a :keyword:`return`, :keyword:`continue`, or :keyword:`break`
 
554
   statement.
 
555
 
 
556
.. [#] A string literal appearing as the first statement in the function body is
 
557
   transformed into the function's ``__doc__`` attribute and therefore the
 
558
   function's :term:`docstring`.
 
559
 
 
560
.. [#] A string literal appearing as the first statement in the class body is
 
561
   transformed into the namespace's ``__doc__`` item and therefore the class's
 
562
   :term:`docstring`.