Home | History | Annotate | Download | only in reference
      1 
      2 .. _datamodel:
      3 
      4 **********
      5 Data model
      6 **********
      7 
      8 
      9 .. _objects:
     10 
     11 Objects, values and types
     12 =========================
     13 
     14 .. index::
     15    single: object
     16    single: data
     17 
     18 :dfn:`Objects` are Python's abstraction for data.  All data in a Python program
     19 is represented by objects or by relations between objects. (In a sense, and in
     20 conformance to Von Neumann's model of a "stored program computer," code is also
     21 represented by objects.)
     22 
     23 .. index::
     24    builtin: id
     25    builtin: type
     26    single: identity of an object
     27    single: value of an object
     28    single: type of an object
     29    single: mutable object
     30    single: immutable object
     31 
     32 .. XXX it *is* now possible in some cases to change an object's
     33    type, under certain controlled conditions
     34 
     35 Every object has an identity, a type and a value.  An object's *identity* never
     36 changes once it has been created; you may think of it as the object's address in
     37 memory.  The ':keyword:`is`' operator compares the identity of two objects; the
     38 :func:`id` function returns an integer representing its identity.
     39 
     40 .. impl-detail::
     41 
     42    For CPython, ``id(x)`` is the memory address where ``x`` is stored.
     43 
     44 An object's type determines the operations that the object supports (e.g., "does
     45 it have a length?") and also defines the possible values for objects of that
     46 type.  The :func:`type` function returns an object's type (which is an object
     47 itself).  Like its identity, an object's :dfn:`type` is also unchangeable.
     48 [#]_
     49 
     50 The *value* of some objects can change.  Objects whose value can
     51 change are said to be *mutable*; objects whose value is unchangeable once they
     52 are created are called *immutable*. (The value of an immutable container object
     53 that contains a reference to a mutable object can change when the latter's value
     54 is changed; however the container is still considered immutable, because the
     55 collection of objects it contains cannot be changed.  So, immutability is not
     56 strictly the same as having an unchangeable value, it is more subtle.) An
     57 object's mutability is determined by its type; for instance, numbers, strings
     58 and tuples are immutable, while dictionaries and lists are mutable.
     59 
     60 .. index::
     61    single: garbage collection
     62    single: reference counting
     63    single: unreachable object
     64 
     65 Objects are never explicitly destroyed; however, when they become unreachable
     66 they may be garbage-collected.  An implementation is allowed to postpone garbage
     67 collection or omit it altogether --- it is a matter of implementation quality
     68 how garbage collection is implemented, as long as no objects are collected that
     69 are still reachable.
     70 
     71 .. impl-detail::
     72 
     73    CPython currently uses a reference-counting scheme with (optional) delayed
     74    detection of cyclically linked garbage, which collects most objects as soon
     75    as they become unreachable, but is not guaranteed to collect garbage
     76    containing circular references.  See the documentation of the :mod:`gc`
     77    module for information on controlling the collection of cyclic garbage.
     78    Other implementations act differently and CPython may change.
     79    Do not depend on immediate finalization of objects when they become
     80    unreachable (so you should always close files explicitly).
     81 
     82 Note that the use of the implementation's tracing or debugging facilities may
     83 keep objects alive that would normally be collectable. Also note that catching
     84 an exception with a ':keyword:`try`...\ :keyword:`except`' statement may keep
     85 objects alive.
     86 
     87 Some objects contain references to "external" resources such as open files or
     88 windows.  It is understood that these resources are freed when the object is
     89 garbage-collected, but since garbage collection is not guaranteed to happen,
     90 such objects also provide an explicit way to release the external resource,
     91 usually a :meth:`close` method. Programs are strongly recommended to explicitly
     92 close such objects.  The ':keyword:`try`...\ :keyword:`finally`' statement
     93 and the ':keyword:`with`' statement provide convenient ways to do this.
     94 
     95 .. index:: single: container
     96 
     97 Some objects contain references to other objects; these are called *containers*.
     98 Examples of containers are tuples, lists and dictionaries.  The references are
     99 part of a container's value.  In most cases, when we talk about the value of a
    100 container, we imply the values, not the identities of the contained objects;
    101 however, when we talk about the mutability of a container, only the identities
    102 of the immediately contained objects are implied.  So, if an immutable container
    103 (like a tuple) contains a reference to a mutable object, its value changes if
    104 that mutable object is changed.
    105 
    106 Types affect almost all aspects of object behavior.  Even the importance of
    107 object identity is affected in some sense: for immutable types, operations that
    108 compute new values may actually return a reference to any existing object with
    109 the same type and value, while for mutable objects this is not allowed.  E.g.,
    110 after ``a = 1; b = 1``, ``a`` and ``b`` may or may not refer to the same object
    111 with the value one, depending on the implementation, but after ``c = []; d =
    112 []``, ``c`` and ``d`` are guaranteed to refer to two different, unique, newly
    113 created empty lists. (Note that ``c = d = []`` assigns the same object to both
    114 ``c`` and ``d``.)
    115 
    116 
    117 .. _types:
    118 
    119 The standard type hierarchy
    120 ===========================
    121 
    122 .. index::
    123    single: type
    124    pair: data; type
    125    pair: type; hierarchy
    126    pair: extension; module
    127    pair: C; language
    128 
    129 Below is a list of the types that are built into Python.  Extension modules
    130 (written in C, Java, or other languages, depending on the implementation) can
    131 define additional types.  Future versions of Python may add types to the type
    132 hierarchy (e.g., rational numbers, efficiently stored arrays of integers, etc.),
    133 although such additions will often be provided via the standard library instead.
    134 
    135 .. index::
    136    single: attribute
    137    pair: special; attribute
    138    triple: generic; special; attribute
    139 
    140 Some of the type descriptions below contain a paragraph listing 'special
    141 attributes.'  These are attributes that provide access to the implementation and
    142 are not intended for general use.  Their definition may change in the future.
    143 
    144 None
    145    .. index:: object: None
    146 
    147    This type has a single value.  There is a single object with this value. This
    148    object is accessed through the built-in name ``None``. It is used to signify the
    149    absence of a value in many situations, e.g., it is returned from functions that
    150    don't explicitly return anything. Its truth value is false.
    151 
    152 NotImplemented
    153    .. index:: object: NotImplemented
    154 
    155    This type has a single value.  There is a single object with this value. This
    156    object is accessed through the built-in name ``NotImplemented``. Numeric methods
    157    and rich comparison methods should return this value if they do not implement the
    158    operation for the operands provided.  (The interpreter will then try the
    159    reflected operation, or some other fallback, depending on the operator.)  Its
    160    truth value is true.
    161 
    162    See
    163    :ref:`implementing-the-arithmetic-operations`
    164    for more details.
    165 
    166 
    167 Ellipsis
    168    .. index:: object: Ellipsis
    169 
    170    This type has a single value.  There is a single object with this value. This
    171    object is accessed through the literal ``...`` or the built-in name
    172    ``Ellipsis``.  Its truth value is true.
    173 
    174 :class:`numbers.Number`
    175    .. index:: object: numeric
    176 
    177    These are created by numeric literals and returned as results by arithmetic
    178    operators and arithmetic built-in functions.  Numeric objects are immutable;
    179    once created their value never changes.  Python numbers are of course strongly
    180    related to mathematical numbers, but subject to the limitations of numerical
    181    representation in computers.
    182 
    183    Python distinguishes between integers, floating point numbers, and complex
    184    numbers:
    185 
    186    :class:`numbers.Integral`
    187       .. index:: object: integer
    188 
    189       These represent elements from the mathematical set of integers (positive and
    190       negative).
    191 
    192       There are two types of integers:
    193 
    194       Integers (:class:`int`)
    195 
    196          These represent numbers in an unlimited range, subject to available (virtual)
    197          memory only.  For the purpose of shift and mask operations, a binary
    198          representation is assumed, and negative numbers are represented in a variant of
    199          2's complement which gives the illusion of an infinite string of sign bits
    200          extending to the left.
    201 
    202       Booleans (:class:`bool`)
    203          .. index::
    204             object: Boolean
    205             single: False
    206             single: True
    207 
    208          These represent the truth values False and True.  The two objects representing
    209          the values ``False`` and ``True`` are the only Boolean objects. The Boolean type is a
    210          subtype of the integer type, and Boolean values behave like the values 0 and 1,
    211          respectively, in almost all contexts, the exception being that when converted to
    212          a string, the strings ``"False"`` or ``"True"`` are returned, respectively.
    213 
    214       .. index:: pair: integer; representation
    215 
    216       The rules for integer representation are intended to give the most meaningful
    217       interpretation of shift and mask operations involving negative integers.
    218 
    219    :class:`numbers.Real` (:class:`float`)
    220       .. index::
    221          object: floating point
    222          pair: floating point; number
    223          pair: C; language
    224          pair: Java; language
    225 
    226       These represent machine-level double precision floating point numbers. You are
    227       at the mercy of the underlying machine architecture (and C or Java
    228       implementation) for the accepted range and handling of overflow. Python does not
    229       support single-precision floating point numbers; the savings in processor and
    230       memory usage that are usually the reason for using these are dwarfed by the
    231       overhead of using objects in Python, so there is no reason to complicate the
    232       language with two kinds of floating point numbers.
    233 
    234    :class:`numbers.Complex` (:class:`complex`)
    235       .. index::
    236          object: complex
    237          pair: complex; number
    238 
    239       These represent complex numbers as a pair of machine-level double precision
    240       floating point numbers.  The same caveats apply as for floating point numbers.
    241       The real and imaginary parts of a complex number ``z`` can be retrieved through
    242       the read-only attributes ``z.real`` and ``z.imag``.
    243 
    244 Sequences
    245    .. index::
    246       builtin: len
    247       object: sequence
    248       single: index operation
    249       single: item selection
    250       single: subscription
    251 
    252    These represent finite ordered sets indexed by non-negative numbers. The
    253    built-in function :func:`len` returns the number of items of a sequence. When
    254    the length of a sequence is *n*, the index set contains the numbers 0, 1,
    255    ..., *n*-1.  Item *i* of sequence *a* is selected by ``a[i]``.
    256 
    257    .. index:: single: slicing
    258 
    259    Sequences also support slicing: ``a[i:j]`` selects all items with index *k* such
    260    that *i* ``<=`` *k* ``<`` *j*.  When used as an expression, a slice is a
    261    sequence of the same type.  This implies that the index set is renumbered so
    262    that it starts at 0.
    263 
    264    Some sequences also support "extended slicing" with a third "step" parameter:
    265    ``a[i:j:k]`` selects all items of *a* with index *x* where ``x = i + n*k``, *n*
    266    ``>=`` ``0`` and *i* ``<=`` *x* ``<`` *j*.
    267 
    268    Sequences are distinguished according to their mutability:
    269 
    270    Immutable sequences
    271       .. index::
    272          object: immutable sequence
    273          object: immutable
    274 
    275       An object of an immutable sequence type cannot change once it is created.  (If
    276       the object contains references to other objects, these other objects may be
    277       mutable and may be changed; however, the collection of objects directly
    278       referenced by an immutable object cannot change.)
    279 
    280       The following types are immutable sequences:
    281 
    282       .. index::
    283          single: string; immutable sequences
    284 
    285       Strings
    286          .. index::
    287             builtin: chr
    288             builtin: ord
    289             single: character
    290             single: integer
    291             single: Unicode
    292 
    293          A string is a sequence of values that represent Unicode code points.
    294          All the code points in the range ``U+0000 - U+10FFFF`` can be
    295          represented in a string.  Python doesn't have a :c:type:`char` type;
    296          instead, every code point in the string is represented as a string
    297          object with length ``1``.  The built-in function :func:`ord`
    298          converts a code point from its string form to an integer in the
    299          range ``0 - 10FFFF``; :func:`chr` converts an integer in the range
    300          ``0 - 10FFFF`` to the corresponding length ``1`` string object.
    301          :meth:`str.encode` can be used to convert a :class:`str` to
    302          :class:`bytes` using the given text encoding, and
    303          :meth:`bytes.decode` can be used to achieve the opposite.
    304 
    305       Tuples
    306          .. index::
    307             object: tuple
    308             pair: singleton; tuple
    309             pair: empty; tuple
    310 
    311          The items of a tuple are arbitrary Python objects. Tuples of two or
    312          more items are formed by comma-separated lists of expressions.  A tuple
    313          of one item (a 'singleton') can be formed by affixing a comma to an
    314          expression (an expression by itself does not create a tuple, since
    315          parentheses must be usable for grouping of expressions).  An empty
    316          tuple can be formed by an empty pair of parentheses.
    317 
    318       Bytes
    319          .. index:: bytes, byte
    320 
    321          A bytes object is an immutable array.  The items are 8-bit bytes,
    322          represented by integers in the range 0 <= x < 256.  Bytes literals
    323          (like ``b'abc'``) and the built-in function :func:`bytes` can be used to
    324          construct bytes objects.  Also, bytes objects can be decoded to strings
    325          via the :meth:`~bytes.decode` method.
    326 
    327    Mutable sequences
    328       .. index::
    329          object: mutable sequence
    330          object: mutable
    331          pair: assignment; statement
    332          single: subscription
    333          single: slicing
    334 
    335       Mutable sequences can be changed after they are created.  The subscription and
    336       slicing notations can be used as the target of assignment and :keyword:`del`
    337       (delete) statements.
    338 
    339       There are currently two intrinsic mutable sequence types:
    340 
    341       Lists
    342          .. index:: object: list
    343 
    344          The items of a list are arbitrary Python objects.  Lists are formed by
    345          placing a comma-separated list of expressions in square brackets. (Note
    346          that there are no special cases needed to form lists of length 0 or 1.)
    347 
    348       Byte Arrays
    349          .. index:: bytearray
    350 
    351          A bytearray object is a mutable array. They are created by the built-in
    352          :func:`bytearray` constructor.  Aside from being mutable (and hence
    353          unhashable), byte arrays otherwise provide the same interface and
    354          functionality as immutable bytes objects.
    355 
    356       .. index:: module: array
    357 
    358       The extension module :mod:`array` provides an additional example of a
    359       mutable sequence type, as does the :mod:`collections` module.
    360 
    361 Set types
    362    .. index::
    363       builtin: len
    364       object: set type
    365 
    366    These represent unordered, finite sets of unique, immutable objects. As such,
    367    they cannot be indexed by any subscript. However, they can be iterated over, and
    368    the built-in function :func:`len` returns the number of items in a set. Common
    369    uses for sets are fast membership testing, removing duplicates from a sequence,
    370    and computing mathematical operations such as intersection, union, difference,
    371    and symmetric difference.
    372 
    373    For set elements, the same immutability rules apply as for dictionary keys. Note
    374    that numeric types obey the normal rules for numeric comparison: if two numbers
    375    compare equal (e.g., ``1`` and ``1.0``), only one of them can be contained in a
    376    set.
    377 
    378    There are currently two intrinsic set types:
    379 
    380    Sets
    381       .. index:: object: set
    382 
    383       These represent a mutable set. They are created by the built-in :func:`set`
    384       constructor and can be modified afterwards by several methods, such as
    385       :meth:`~set.add`.
    386 
    387    Frozen sets
    388       .. index:: object: frozenset
    389 
    390       These represent an immutable set.  They are created by the built-in
    391       :func:`frozenset` constructor.  As a frozenset is immutable and
    392       :term:`hashable`, it can be used again as an element of another set, or as
    393       a dictionary key.
    394 
    395 Mappings
    396    .. index::
    397       builtin: len
    398       single: subscription
    399       object: mapping
    400 
    401    These represent finite sets of objects indexed by arbitrary index sets. The
    402    subscript notation ``a[k]`` selects the item indexed by ``k`` from the mapping
    403    ``a``; this can be used in expressions and as the target of assignments or
    404    :keyword:`del` statements. The built-in function :func:`len` returns the number
    405    of items in a mapping.
    406 
    407    There is currently a single intrinsic mapping type:
    408 
    409    Dictionaries
    410       .. index:: object: dictionary
    411 
    412       These represent finite sets of objects indexed by nearly arbitrary values.  The
    413       only types of values not acceptable as keys are values containing lists or
    414       dictionaries or other mutable types that are compared by value rather than by
    415       object identity, the reason being that the efficient implementation of
    416       dictionaries requires a key's hash value to remain constant. Numeric types used
    417       for keys obey the normal rules for numeric comparison: if two numbers compare
    418       equal (e.g., ``1`` and ``1.0``) then they can be used interchangeably to index
    419       the same dictionary entry.
    420 
    421       Dictionaries are mutable; they can be created by the ``{...}`` notation (see
    422       section :ref:`dict`).
    423 
    424       .. index::
    425          module: dbm.ndbm
    426          module: dbm.gnu
    427 
    428       The extension modules :mod:`dbm.ndbm` and :mod:`dbm.gnu` provide
    429       additional examples of mapping types, as does the :mod:`collections`
    430       module.
    431 
    432 Callable types
    433    .. index::
    434       object: callable
    435       pair: function; call
    436       single: invocation
    437       pair: function; argument
    438 
    439    These are the types to which the function call operation (see section
    440    :ref:`calls`) can be applied:
    441 
    442    User-defined functions
    443       .. index::
    444          pair: user-defined; function
    445          object: function
    446          object: user-defined function
    447 
    448       A user-defined function object is created by a function definition (see
    449       section :ref:`function`).  It should be called with an argument list
    450       containing the same number of items as the function's formal parameter
    451       list.
    452 
    453       Special attributes:
    454 
    455       .. tabularcolumns:: |l|L|l|
    456 
    457       .. index::
    458          single: __doc__ (function attribute)
    459          single: __name__ (function attribute)
    460          single: __module__ (function attribute)
    461          single: __dict__ (function attribute)
    462          single: __defaults__ (function attribute)
    463          single: __closure__ (function attribute)
    464          single: __code__ (function attribute)
    465          single: __globals__ (function attribute)
    466          single: __annotations__ (function attribute)
    467          single: __kwdefaults__ (function attribute)
    468          pair: global; namespace
    469 
    470       +-------------------------+-------------------------------+-----------+
    471       | Attribute               | Meaning                       |           |
    472       +=========================+===============================+===========+
    473       | :attr:`__doc__`         | The function's documentation  | Writable  |
    474       |                         | string, or ``None`` if        |           |
    475       |                         | unavailable; not inherited by |           |
    476       |                         | subclasses                    |           |
    477       +-------------------------+-------------------------------+-----------+
    478       | :attr:`~definition.\    | The function's name           | Writable  |
    479       | __name__`               |                               |           |
    480       +-------------------------+-------------------------------+-----------+
    481       | :attr:`~definition.\    | The function's                | Writable  |
    482       | __qualname__`           | :term:`qualified name`        |           |
    483       |                         |                               |           |
    484       |                         | .. versionadded:: 3.3         |           |
    485       +-------------------------+-------------------------------+-----------+
    486       | :attr:`__module__`      | The name of the module the    | Writable  |
    487       |                         | function was defined in, or   |           |
    488       |                         | ``None`` if unavailable.      |           |
    489       +-------------------------+-------------------------------+-----------+
    490       | :attr:`__defaults__`    | A tuple containing default    | Writable  |
    491       |                         | argument values for those     |           |
    492       |                         | arguments that have defaults, |           |
    493       |                         | or ``None`` if no arguments   |           |
    494       |                         | have a default value          |           |
    495       +-------------------------+-------------------------------+-----------+
    496       | :attr:`__code__`        | The code object representing  | Writable  |
    497       |                         | the compiled function body.   |           |
    498       +-------------------------+-------------------------------+-----------+
    499       | :attr:`__globals__`     | A reference to the dictionary | Read-only |
    500       |                         | that holds the function's     |           |
    501       |                         | global variables --- the      |           |
    502       |                         | global namespace of the       |           |
    503       |                         | module in which the function  |           |
    504       |                         | was defined.                  |           |
    505       +-------------------------+-------------------------------+-----------+
    506       | :attr:`~object.__dict__`| The namespace supporting      | Writable  |
    507       |                         | arbitrary function            |           |
    508       |                         | attributes.                   |           |
    509       +-------------------------+-------------------------------+-----------+
    510       | :attr:`__closure__`     | ``None`` or a tuple of cells  | Read-only |
    511       |                         | that contain bindings for the |           |
    512       |                         | function's free variables.    |           |
    513       +-------------------------+-------------------------------+-----------+
    514       | :attr:`__annotations__` | A dict containing annotations | Writable  |
    515       |                         | of parameters.  The keys of   |           |
    516       |                         | the dict are the parameter    |           |
    517       |                         | names, and ``'return'`` for   |           |
    518       |                         | the return annotation, if     |           |
    519       |                         | provided.                     |           |
    520       +-------------------------+-------------------------------+-----------+
    521       | :attr:`__kwdefaults__`  | A dict containing defaults    | Writable  |
    522       |                         | for keyword-only parameters.  |           |
    523       +-------------------------+-------------------------------+-----------+
    524 
    525       Most of the attributes labelled "Writable" check the type of the assigned value.
    526 
    527       Function objects also support getting and setting arbitrary attributes, which
    528       can be used, for example, to attach metadata to functions.  Regular attribute
    529       dot-notation is used to get and set such attributes. *Note that the current
    530       implementation only supports function attributes on user-defined functions.
    531       Function attributes on built-in functions may be supported in the future.*
    532 
    533       Additional information about a function's definition can be retrieved from its
    534       code object; see the description of internal types below.
    535 
    536    Instance methods
    537       .. index::
    538          object: method
    539          object: user-defined method
    540          pair: user-defined; method
    541 
    542       An instance method object combines a class, a class instance and any
    543       callable object (normally a user-defined function).
    544 
    545       .. index::
    546          single: __func__ (method attribute)
    547          single: __self__ (method attribute)
    548          single: __doc__ (method attribute)
    549          single: __name__ (method attribute)
    550          single: __module__ (method attribute)
    551 
    552       Special read-only attributes: :attr:`__self__` is the class instance object,
    553       :attr:`__func__` is the function object; :attr:`__doc__` is the method's
    554       documentation (same as ``__func__.__doc__``); :attr:`~definition.__name__` is the
    555       method name (same as ``__func__.__name__``); :attr:`__module__` is the
    556       name of the module the method was defined in, or ``None`` if unavailable.
    557 
    558       Methods also support accessing (but not setting) the arbitrary function
    559       attributes on the underlying function object.
    560 
    561       User-defined method objects may be created when getting an attribute of a
    562       class (perhaps via an instance of that class), if that attribute is a
    563       user-defined function object or a class method object.
    564 
    565       When an instance method object is created by retrieving a user-defined
    566       function object from a class via one of its instances, its
    567       :attr:`__self__` attribute is the instance, and the method object is said
    568       to be bound.  The new method's :attr:`__func__` attribute is the original
    569       function object.
    570 
    571       When a user-defined method object is created by retrieving another method
    572       object from a class or instance, the behaviour is the same as for a
    573       function object, except that the :attr:`__func__` attribute of the new
    574       instance is not the original method object but its :attr:`__func__`
    575       attribute.
    576 
    577       When an instance method object is created by retrieving a class method
    578       object from a class or instance, its :attr:`__self__` attribute is the
    579       class itself, and its :attr:`__func__` attribute is the function object
    580       underlying the class method.
    581 
    582       When an instance method object is called, the underlying function
    583       (:attr:`__func__`) is called, inserting the class instance
    584       (:attr:`__self__`) in front of the argument list.  For instance, when
    585       :class:`C` is a class which contains a definition for a function
    586       :meth:`f`, and ``x`` is an instance of :class:`C`, calling ``x.f(1)`` is
    587       equivalent to calling ``C.f(x, 1)``.
    588 
    589       When an instance method object is derived from a class method object, the
    590       "class instance" stored in :attr:`__self__` will actually be the class
    591       itself, so that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to
    592       calling ``f(C,1)`` where ``f`` is the underlying function.
    593 
    594       Note that the transformation from function object to instance method
    595       object happens each time the attribute is retrieved from the instance.  In
    596       some cases, a fruitful optimization is to assign the attribute to a local
    597       variable and call that local variable. Also notice that this
    598       transformation only happens for user-defined functions; other callable
    599       objects (and all non-callable objects) are retrieved without
    600       transformation.  It is also important to note that user-defined functions
    601       which are attributes of a class instance are not converted to bound
    602       methods; this *only* happens when the function is an attribute of the
    603       class.
    604 
    605    Generator functions
    606       .. index::
    607          single: generator; function
    608          single: generator; iterator
    609 
    610       A function or method which uses the :keyword:`yield` statement (see section
    611       :ref:`yield`) is called a :dfn:`generator function`.  Such a function, when
    612       called, always returns an iterator object which can be used to execute the
    613       body of the function:  calling the iterator's :meth:`iterator.__next__`
    614       method will cause the function to execute until it provides a value
    615       using the :keyword:`yield` statement.  When the function executes a
    616       :keyword:`return` statement or falls off the end, a :exc:`StopIteration`
    617       exception is raised and the iterator will have reached the end of the set of
    618       values to be returned.
    619 
    620    Coroutine functions
    621       .. index::
    622          single: coroutine; function
    623 
    624       A function or method which is defined using :keyword:`async def` is called
    625       a :dfn:`coroutine function`.  Such a function, when called, returns a
    626       :term:`coroutine` object.  It may contain :keyword:`await` expressions,
    627       as well as :keyword:`async with` and :keyword:`async for` statements. See
    628       also the :ref:`coroutine-objects` section.
    629 
    630    Asynchronous generator functions
    631       .. index::
    632          single: asynchronous generator; function
    633          single: asynchronous generator; asynchronous iterator
    634 
    635       A function or method which is defined using :keyword:`async def` and
    636       which uses the :keyword:`yield` statement is called a
    637       :dfn:`asynchronous generator function`.  Such a function, when called,
    638       returns an asynchronous iterator object which can be used in an
    639       :keyword:`async for` statement to execute the body of the function.
    640 
    641       Calling the asynchronous iterator's :meth:`aiterator.__anext__` method
    642       will return an :term:`awaitable` which when awaited
    643       will execute until it provides a value using the :keyword:`yield`
    644       expression.  When the function executes an empty :keyword:`return`
    645       statement or falls off the end, a :exc:`StopAsyncIteration` exception
    646       is raised and the asynchronous iterator will have reached the end of
    647       the set of values to be yielded.
    648 
    649    Built-in functions
    650       .. index::
    651          object: built-in function
    652          object: function
    653          pair: C; language
    654 
    655       A built-in function object is a wrapper around a C function.  Examples of
    656       built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a
    657       standard built-in module). The number and type of the arguments are
    658       determined by the C function. Special read-only attributes:
    659       :attr:`__doc__` is the function's documentation string, or ``None`` if
    660       unavailable; :attr:`~definition.__name__` is the function's name; :attr:`__self__` is
    661       set to ``None`` (but see the next item); :attr:`__module__` is the name of
    662       the module the function was defined in or ``None`` if unavailable.
    663 
    664    Built-in methods
    665       .. index::
    666          object: built-in method
    667          object: method
    668          pair: built-in; method
    669 
    670       This is really a different disguise of a built-in function, this time containing
    671       an object passed to the C function as an implicit extra argument.  An example of
    672       a built-in method is ``alist.append()``, assuming *alist* is a list object. In
    673       this case, the special read-only attribute :attr:`__self__` is set to the object
    674       denoted by *alist*.
    675 
    676    Classes
    677       Classes are callable.  These objects normally act as factories for new
    678       instances of themselves, but variations are possible for class types that
    679       override :meth:`__new__`.  The arguments of the call are passed to
    680       :meth:`__new__` and, in the typical case, to :meth:`__init__` to
    681       initialize the new instance.
    682 
    683    Class Instances
    684       Instances of arbitrary classes can be made callable by defining a
    685       :meth:`__call__` method in their class.
    686 
    687 
    688 Modules
    689    .. index::
    690       statement: import
    691       object: module
    692 
    693    Modules are a basic organizational unit of Python code, and are created by
    694    the :ref:`import system <importsystem>` as invoked either by the
    695    :keyword:`import` statement (see :keyword:`import`), or by calling
    696    functions such as :func:`importlib.import_module` and built-in
    697    :func:`__import__`.  A module object has a namespace implemented by a
    698    dictionary object (this is the dictionary referenced by the ``__globals__``
    699    attribute of functions defined in the module).  Attribute references are
    700    translated to lookups in this dictionary, e.g., ``m.x`` is equivalent to
    701    ``m.__dict__["x"]``. A module object does not contain the code object used
    702    to initialize the module (since it isn't needed once the initialization is
    703    done).
    704 
    705    Attribute assignment updates the module's namespace dictionary, e.g.,
    706    ``m.x = 1`` is equivalent to ``m.__dict__["x"] = 1``.
    707 
    708    .. index::
    709       single: __name__ (module attribute)
    710       single: __doc__ (module attribute)
    711       single: __file__ (module attribute)
    712       single: __annotations__ (module attribute)
    713       pair: module; namespace
    714 
    715    Predefined (writable) attributes: :attr:`__name__` is the module's name;
    716    :attr:`__doc__` is the module's documentation string, or ``None`` if
    717    unavailable; :attr:`__annotations__` (optional) is a dictionary containing
    718    :term:`variable annotations <variable annotation>` collected during module
    719    body execution; :attr:`__file__` is the pathname of the file from which the
    720    module was loaded, if it was loaded from a file. The :attr:`__file__`
    721    attribute may be missing for certain types of modules, such as C modules
    722    that are statically linked into the interpreter; for extension modules
    723    loaded dynamically from a shared library, it is the pathname of the shared
    724    library file.
    725 
    726    .. index:: single: __dict__ (module attribute)
    727 
    728    Special read-only attribute: :attr:`~object.__dict__` is the module's
    729    namespace as a dictionary object.
    730 
    731    .. impl-detail::
    732 
    733       Because of the way CPython clears module dictionaries, the module
    734       dictionary will be cleared when the module falls out of scope even if the
    735       dictionary still has live references.  To avoid this, copy the dictionary
    736       or keep the module around while using its dictionary directly.
    737 
    738 Custom classes
    739    Custom class types are typically created by class definitions (see section
    740    :ref:`class`).  A class has a namespace implemented by a dictionary object.
    741    Class attribute references are translated to lookups in this dictionary, e.g.,
    742    ``C.x`` is translated to ``C.__dict__["x"]`` (although there are a number of
    743    hooks which allow for other means of locating attributes). When the attribute
    744    name is not found there, the attribute search continues in the base classes.
    745    This search of the base classes uses the C3 method resolution order which
    746    behaves correctly even in the presence of 'diamond' inheritance structures
    747    where there are multiple inheritance paths leading back to a common ancestor.
    748    Additional details on the C3 MRO used by Python can be found in the
    749    documentation accompanying the 2.3 release at
    750    https://www.python.org/download/releases/2.3/mro/.
    751 
    752    .. XXX: Could we add that MRO doc as an appendix to the language ref?
    753 
    754    .. index::
    755       object: class
    756       object: class instance
    757       object: instance
    758       pair: class object; call
    759       single: container
    760       object: dictionary
    761       pair: class; attribute
    762 
    763    When a class attribute reference (for class :class:`C`, say) would yield a
    764    class method object, it is transformed into an instance method object whose
    765    :attr:`__self__` attributes is :class:`C`.  When it would yield a static
    766    method object, it is transformed into the object wrapped by the static method
    767    object. See section :ref:`descriptors` for another way in which attributes
    768    retrieved from a class may differ from those actually contained in its
    769    :attr:`~object.__dict__`.
    770 
    771    .. index:: triple: class; attribute; assignment
    772 
    773    Class attribute assignments update the class's dictionary, never the dictionary
    774    of a base class.
    775 
    776    .. index:: pair: class object; call
    777 
    778    A class object can be called (see above) to yield a class instance (see below).
    779 
    780    .. index::
    781       single: __name__ (class attribute)
    782       single: __module__ (class attribute)
    783       single: __dict__ (class attribute)
    784       single: __bases__ (class attribute)
    785       single: __doc__ (class attribute)
    786       single: __annotations__ (class attribute)
    787 
    788    Special attributes: :attr:`~definition.__name__` is the class name; :attr:`__module__` is
    789    the module name in which the class was defined; :attr:`~object.__dict__` is the
    790    dictionary containing the class's namespace; :attr:`~class.__bases__` is a
    791    tuple containing the base classes, in the order of their occurrence in the
    792    base class list; :attr:`__doc__` is the class's documentation string,
    793    or ``None`` if undefined; :attr:`__annotations__` (optional) is a dictionary
    794    containing :term:`variable annotations <variable annotation>` collected during
    795    class body execution.
    796 
    797 Class instances
    798    .. index::
    799       object: class instance
    800       object: instance
    801       pair: class; instance
    802       pair: class instance; attribute
    803 
    804    A class instance is created by calling a class object (see above).  A class
    805    instance has a namespace implemented as a dictionary which is the first place
    806    in which attribute references are searched.  When an attribute is not found
    807    there, and the instance's class has an attribute by that name, the search
    808    continues with the class attributes.  If a class attribute is found that is a
    809    user-defined function object, it is transformed into an instance method
    810    object whose :attr:`__self__` attribute is the instance.  Static method and
    811    class method objects are also transformed; see above under "Classes".  See
    812    section :ref:`descriptors` for another way in which attributes of a class
    813    retrieved via its instances may differ from the objects actually stored in
    814    the class's :attr:`~object.__dict__`.  If no class attribute is found, and the
    815    object's class has a :meth:`__getattr__` method, that is called to satisfy
    816    the lookup.
    817 
    818    .. index:: triple: class instance; attribute; assignment
    819 
    820    Attribute assignments and deletions update the instance's dictionary, never a
    821    class's dictionary.  If the class has a :meth:`__setattr__` or
    822    :meth:`__delattr__` method, this is called instead of updating the instance
    823    dictionary directly.
    824 
    825    .. index::
    826       object: numeric
    827       object: sequence
    828       object: mapping
    829 
    830    Class instances can pretend to be numbers, sequences, or mappings if they have
    831    methods with certain special names.  See section :ref:`specialnames`.
    832 
    833    .. index::
    834       single: __dict__ (instance attribute)
    835       single: __class__ (instance attribute)
    836 
    837    Special attributes: :attr:`~object.__dict__` is the attribute dictionary;
    838    :attr:`~instance.__class__` is the instance's class.
    839 
    840 I/O objects (also known as file objects)
    841    .. index::
    842       builtin: open
    843       module: io
    844       single: popen() (in module os)
    845       single: makefile() (socket method)
    846       single: sys.stdin
    847       single: sys.stdout
    848       single: sys.stderr
    849       single: stdio
    850       single: stdin (in module sys)
    851       single: stdout (in module sys)
    852       single: stderr (in module sys)
    853 
    854    A :term:`file object` represents an open file.  Various shortcuts are
    855    available to create file objects: the :func:`open` built-in function, and
    856    also :func:`os.popen`, :func:`os.fdopen`, and the
    857    :meth:`~socket.socket.makefile` method of socket objects (and perhaps by
    858    other functions or methods provided by extension modules).
    859 
    860    The objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are
    861    initialized to file objects corresponding to the interpreter's standard
    862    input, output and error streams; they are all open in text mode and
    863    therefore follow the interface defined by the :class:`io.TextIOBase`
    864    abstract class.
    865 
    866 Internal types
    867    .. index::
    868       single: internal type
    869       single: types, internal
    870 
    871    A few types used internally by the interpreter are exposed to the user. Their
    872    definitions may change with future versions of the interpreter, but they are
    873    mentioned here for completeness.
    874 
    875    .. index:: bytecode, object; code, code object
    876 
    877    Code objects
    878       Code objects represent *byte-compiled* executable Python code, or :term:`bytecode`.
    879       The difference between a code object and a function object is that the function
    880       object contains an explicit reference to the function's globals (the module in
    881       which it was defined), while a code object contains no context; also the default
    882       argument values are stored in the function object, not in the code object
    883       (because they represent values calculated at run-time).  Unlike function
    884       objects, code objects are immutable and contain no references (directly or
    885       indirectly) to mutable objects.
    886 
    887       .. index::
    888          single: co_argcount (code object attribute)
    889          single: co_code (code object attribute)
    890          single: co_consts (code object attribute)
    891          single: co_filename (code object attribute)
    892          single: co_firstlineno (code object attribute)
    893          single: co_flags (code object attribute)
    894          single: co_lnotab (code object attribute)
    895          single: co_name (code object attribute)
    896          single: co_names (code object attribute)
    897          single: co_nlocals (code object attribute)
    898          single: co_stacksize (code object attribute)
    899          single: co_varnames (code object attribute)
    900          single: co_cellvars (code object attribute)
    901          single: co_freevars (code object attribute)
    902 
    903       Special read-only attributes: :attr:`co_name` gives the function name;
    904       :attr:`co_argcount` is the number of positional arguments (including arguments
    905       with default values); :attr:`co_nlocals` is the number of local variables used
    906       by the function (including arguments); :attr:`co_varnames` is a tuple containing
    907       the names of the local variables (starting with the argument names);
    908       :attr:`co_cellvars` is a tuple containing the names of local variables that are
    909       referenced by nested functions; :attr:`co_freevars` is a tuple containing the
    910       names of free variables; :attr:`co_code` is a string representing the sequence
    911       of bytecode instructions; :attr:`co_consts` is a tuple containing the literals
    912       used by the bytecode; :attr:`co_names` is a tuple containing the names used by
    913       the bytecode; :attr:`co_filename` is the filename from which the code was
    914       compiled; :attr:`co_firstlineno` is the first line number of the function;
    915       :attr:`co_lnotab` is a string encoding the mapping from bytecode offsets to
    916       line numbers (for details see the source code of the interpreter);
    917       :attr:`co_stacksize` is the required stack size (including local variables);
    918       :attr:`co_flags` is an integer encoding a number of flags for the interpreter.
    919 
    920       .. index:: object: generator
    921 
    922       The following flag bits are defined for :attr:`co_flags`: bit ``0x04`` is set if
    923       the function uses the ``*arguments`` syntax to accept an arbitrary number of
    924       positional arguments; bit ``0x08`` is set if the function uses the
    925       ``**keywords`` syntax to accept arbitrary keyword arguments; bit ``0x20`` is set
    926       if the function is a generator.
    927 
    928       Future feature declarations (``from __future__ import division``) also use bits
    929       in :attr:`co_flags` to indicate whether a code object was compiled with a
    930       particular feature enabled: bit ``0x2000`` is set if the function was compiled
    931       with future division enabled; bits ``0x10`` and ``0x1000`` were used in earlier
    932       versions of Python.
    933 
    934       Other bits in :attr:`co_flags` are reserved for internal use.
    935 
    936       .. index:: single: documentation string
    937 
    938       If a code object represents a function, the first item in :attr:`co_consts` is
    939       the documentation string of the function, or ``None`` if undefined.
    940 
    941    .. _frame-objects:
    942 
    943    Frame objects
    944       .. index:: object: frame
    945 
    946       Frame objects represent execution frames.  They may occur in traceback objects
    947       (see below).
    948 
    949       .. index::
    950          single: f_back (frame attribute)
    951          single: f_code (frame attribute)
    952          single: f_globals (frame attribute)
    953          single: f_locals (frame attribute)
    954          single: f_lasti (frame attribute)
    955          single: f_builtins (frame attribute)
    956 
    957       Special read-only attributes: :attr:`f_back` is to the previous stack frame
    958       (towards the caller), or ``None`` if this is the bottom stack frame;
    959       :attr:`f_code` is the code object being executed in this frame; :attr:`f_locals`
    960       is the dictionary used to look up local variables; :attr:`f_globals` is used for
    961       global variables; :attr:`f_builtins` is used for built-in (intrinsic) names;
    962       :attr:`f_lasti` gives the precise instruction (this is an index into the
    963       bytecode string of the code object).
    964 
    965       .. index::
    966          single: f_trace (frame attribute)
    967          single: f_lineno (frame attribute)
    968 
    969       Special writable attributes: :attr:`f_trace`, if not ``None``, is a function
    970       called at the start of each source code line (this is used by the debugger);
    971       :attr:`f_lineno` is the current line number of the frame --- writing to this
    972       from within a trace function jumps to the given line (only for the bottom-most
    973       frame).  A debugger can implement a Jump command (aka Set Next Statement)
    974       by writing to f_lineno.
    975 
    976       Frame objects support one method:
    977 
    978       .. method:: frame.clear()
    979 
    980          This method clears all references to local variables held by the
    981          frame.  Also, if the frame belonged to a generator, the generator
    982          is finalized.  This helps break reference cycles involving frame
    983          objects (for example when catching an exception and storing its
    984          traceback for later use).
    985 
    986          :exc:`RuntimeError` is raised if the frame is currently executing.
    987 
    988          .. versionadded:: 3.4
    989 
    990    Traceback objects
    991       .. index::
    992          object: traceback
    993          pair: stack; trace
    994          pair: exception; handler
    995          pair: execution; stack
    996          single: exc_info (in module sys)
    997          single: last_traceback (in module sys)
    998          single: sys.exc_info
    999          single: sys.last_traceback
   1000 
   1001       Traceback objects represent a stack trace of an exception.  A traceback object
   1002       is created when an exception occurs.  When the search for an exception handler
   1003       unwinds the execution stack, at each unwound level a traceback object is
   1004       inserted in front of the current traceback.  When an exception handler is
   1005       entered, the stack trace is made available to the program. (See section
   1006       :ref:`try`.) It is accessible as the third item of the
   1007       tuple returned by ``sys.exc_info()``. When the program contains no suitable
   1008       handler, the stack trace is written (nicely formatted) to the standard error
   1009       stream; if the interpreter is interactive, it is also made available to the user
   1010       as ``sys.last_traceback``.
   1011 
   1012       .. index::
   1013          single: tb_next (traceback attribute)
   1014          single: tb_frame (traceback attribute)
   1015          single: tb_lineno (traceback attribute)
   1016          single: tb_lasti (traceback attribute)
   1017          statement: try
   1018 
   1019       Special read-only attributes: :attr:`tb_next` is the next level in the stack
   1020       trace (towards the frame where the exception occurred), or ``None`` if there is
   1021       no next level; :attr:`tb_frame` points to the execution frame of the current
   1022       level; :attr:`tb_lineno` gives the line number where the exception occurred;
   1023       :attr:`tb_lasti` indicates the precise instruction.  The line number and last
   1024       instruction in the traceback may differ from the line number of its frame object
   1025       if the exception occurred in a :keyword:`try` statement with no matching except
   1026       clause or with a finally clause.
   1027 
   1028    Slice objects
   1029       .. index:: builtin: slice
   1030 
   1031       Slice objects are used to represent slices for :meth:`__getitem__`
   1032       methods.  They are also created by the built-in :func:`slice` function.
   1033 
   1034       .. index::
   1035          single: start (slice object attribute)
   1036          single: stop (slice object attribute)
   1037          single: step (slice object attribute)
   1038 
   1039       Special read-only attributes: :attr:`~slice.start` is the lower bound;
   1040       :attr:`~slice.stop` is the upper bound; :attr:`~slice.step` is the step
   1041       value; each is ``None`` if omitted.  These attributes can have any type.
   1042 
   1043       Slice objects support one method:
   1044 
   1045       .. method:: slice.indices(self, length)
   1046 
   1047          This method takes a single integer argument *length* and computes
   1048          information about the slice that the slice object would describe if
   1049          applied to a sequence of *length* items.  It returns a tuple of three
   1050          integers; respectively these are the *start* and *stop* indices and the
   1051          *step* or stride length of the slice. Missing or out-of-bounds indices
   1052          are handled in a manner consistent with regular slices.
   1053 
   1054    Static method objects
   1055       Static method objects provide a way of defeating the transformation of function
   1056       objects to method objects described above. A static method object is a wrapper
   1057       around any other object, usually a user-defined method object. When a static
   1058       method object is retrieved from a class or a class instance, the object actually
   1059       returned is the wrapped object, which is not subject to any further
   1060       transformation. Static method objects are not themselves callable, although the
   1061       objects they wrap usually are. Static method objects are created by the built-in
   1062       :func:`staticmethod` constructor.
   1063 
   1064    Class method objects
   1065       A class method object, like a static method object, is a wrapper around another
   1066       object that alters the way in which that object is retrieved from classes and
   1067       class instances. The behaviour of class method objects upon such retrieval is
   1068       described above, under "User-defined methods". Class method objects are created
   1069       by the built-in :func:`classmethod` constructor.
   1070 
   1071 
   1072 .. _specialnames:
   1073 
   1074 Special method names
   1075 ====================
   1076 
   1077 .. index::
   1078    pair: operator; overloading
   1079    single: __getitem__() (mapping object method)
   1080 
   1081 A class can implement certain operations that are invoked by special syntax
   1082 (such as arithmetic operations or subscripting and slicing) by defining methods
   1083 with special names. This is Python's approach to :dfn:`operator overloading`,
   1084 allowing classes to define their own behavior with respect to language
   1085 operators.  For instance, if a class defines a method named :meth:`__getitem__`,
   1086 and ``x`` is an instance of this class, then ``x[i]`` is roughly equivalent
   1087 to ``type(x).__getitem__(x, i)``.  Except where mentioned, attempts to execute an
   1088 operation raise an exception when no appropriate method is defined (typically
   1089 :exc:`AttributeError` or :exc:`TypeError`).
   1090 
   1091 Setting a special method to ``None`` indicates that the corresponding
   1092 operation is not available.  For example, if a class sets
   1093 :meth:`__iter__` to ``None``, the class is not iterable, so calling
   1094 :func:`iter` on its instances will raise a :exc:`TypeError` (without
   1095 falling back to :meth:`__getitem__`). [#]_
   1096 
   1097 When implementing a class that emulates any built-in type, it is important that
   1098 the emulation only be implemented to the degree that it makes sense for the
   1099 object being modelled.  For example, some sequences may work well with retrieval
   1100 of individual elements, but extracting a slice may not make sense.  (One example
   1101 of this is the :class:`~xml.dom.NodeList` interface in the W3C's Document
   1102 Object Model.)
   1103 
   1104 
   1105 .. _customization:
   1106 
   1107 Basic customization
   1108 -------------------
   1109 
   1110 .. method:: object.__new__(cls[, ...])
   1111 
   1112    .. index:: pair: subclassing; immutable types
   1113 
   1114    Called to create a new instance of class *cls*.  :meth:`__new__` is a static
   1115    method (special-cased so you need not declare it as such) that takes the class
   1116    of which an instance was requested as its first argument.  The remaining
   1117    arguments are those passed to the object constructor expression (the call to the
   1118    class).  The return value of :meth:`__new__` should be the new object instance
   1119    (usually an instance of *cls*).
   1120 
   1121    Typical implementations create a new instance of the class by invoking the
   1122    superclass's :meth:`__new__` method using ``super(currentclass,
   1123    cls).__new__(cls[, ...])`` with appropriate arguments and then modifying the
   1124    newly-created instance as necessary before returning it.
   1125 
   1126    If :meth:`__new__` returns an instance of *cls*, then the new instance's
   1127    :meth:`__init__` method will be invoked like ``__init__(self[, ...])``, where
   1128    *self* is the new instance and the remaining arguments are the same as were
   1129    passed to :meth:`__new__`.
   1130 
   1131    If :meth:`__new__` does not return an instance of *cls*, then the new instance's
   1132    :meth:`__init__` method will not be invoked.
   1133 
   1134    :meth:`__new__` is intended mainly to allow subclasses of immutable types (like
   1135    int, str, or tuple) to customize instance creation.  It is also commonly
   1136    overridden in custom metaclasses in order to customize class creation.
   1137 
   1138 
   1139 .. method:: object.__init__(self[, ...])
   1140 
   1141    .. index:: pair: class; constructor
   1142 
   1143    Called after the instance has been created (by :meth:`__new__`), but before
   1144    it is returned to the caller.  The arguments are those passed to the
   1145    class constructor expression.  If a base class has an :meth:`__init__`
   1146    method, the derived class's :meth:`__init__` method, if any, must explicitly
   1147    call it to ensure proper initialization of the base class part of the
   1148    instance; for example: ``BaseClass.__init__(self, [args...])``.
   1149 
   1150    Because :meth:`__new__` and :meth:`__init__` work together in constructing
   1151    objects (:meth:`__new__` to create it, and :meth:`__init__` to customize it),
   1152    no non-``None`` value may be returned by :meth:`__init__`; doing so will
   1153    cause a :exc:`TypeError` to be raised at runtime.
   1154 
   1155 
   1156 .. method:: object.__del__(self)
   1157 
   1158    .. index::
   1159       single: destructor
   1160       statement: del
   1161 
   1162    Called when the instance is about to be destroyed.  This is also called a
   1163    destructor.  If a base class has a :meth:`__del__` method, the derived class's
   1164    :meth:`__del__` method, if any, must explicitly call it to ensure proper
   1165    deletion of the base class part of the instance.  Note that it is possible
   1166    (though not recommended!) for the :meth:`__del__` method to postpone destruction
   1167    of the instance by creating a new reference to it.  It may then be called at a
   1168    later time when this new reference is deleted.  It is not guaranteed that
   1169    :meth:`__del__` methods are called for objects that still exist when the
   1170    interpreter exits.
   1171 
   1172    .. note::
   1173 
   1174       ``del x`` doesn't directly call ``x.__del__()`` --- the former decrements
   1175       the reference count for ``x`` by one, and the latter is only called when
   1176       ``x``'s reference count reaches zero.  Some common situations that may
   1177       prevent the reference count of an object from going to zero include:
   1178       circular references between objects (e.g., a doubly-linked list or a tree
   1179       data structure with parent and child pointers); a reference to the object
   1180       on the stack frame of a function that caught an exception (the traceback
   1181       stored in ``sys.exc_info()[2]`` keeps the stack frame alive); or a
   1182       reference to the object on the stack frame that raised an unhandled
   1183       exception in interactive mode (the traceback stored in
   1184       ``sys.last_traceback`` keeps the stack frame alive).  The first situation
   1185       can only be remedied by explicitly breaking the cycles; the second can be
   1186       resolved by freeing the reference to the traceback object when it is no
   1187       longer useful, and the third can be resolved by storing ``None`` in
   1188       ``sys.last_traceback``.
   1189       Circular references which are garbage are detected and cleaned up when
   1190       the cyclic garbage collector is enabled (it's on by default). Refer to the
   1191       documentation for the :mod:`gc` module for more information about this
   1192       topic.
   1193 
   1194    .. warning::
   1195 
   1196       Due to the precarious circumstances under which :meth:`__del__` methods are
   1197       invoked, exceptions that occur during their execution are ignored, and a warning
   1198       is printed to ``sys.stderr`` instead.  Also, when :meth:`__del__` is invoked in
   1199       response to a module being deleted (e.g., when execution of the program is
   1200       done), other globals referenced by the :meth:`__del__` method may already have
   1201       been deleted or in the process of being torn down (e.g. the import
   1202       machinery shutting down).  For this reason, :meth:`__del__` methods
   1203       should do the absolute
   1204       minimum needed to maintain external invariants.  Starting with version 1.5,
   1205       Python guarantees that globals whose name begins with a single underscore are
   1206       deleted from their module before other globals are deleted; if no other
   1207       references to such globals exist, this may help in assuring that imported
   1208       modules are still available at the time when the :meth:`__del__` method is
   1209       called.
   1210 
   1211       .. index::
   1212          single: repr() (built-in function); __repr__() (object method)
   1213 
   1214 
   1215 .. method:: object.__repr__(self)
   1216 
   1217    Called by the :func:`repr` built-in function to compute the "official" string
   1218    representation of an object.  If at all possible, this should look like a
   1219    valid Python expression that could be used to recreate an object with the
   1220    same value (given an appropriate environment).  If this is not possible, a
   1221    string of the form ``<...some useful description...>`` should be returned.
   1222    The return value must be a string object. If a class defines :meth:`__repr__`
   1223    but not :meth:`__str__`, then :meth:`__repr__` is also used when an
   1224    "informal" string representation of instances of that class is required.
   1225 
   1226    This is typically used for debugging, so it is important that the representation
   1227    is information-rich and unambiguous.
   1228 
   1229    .. index::
   1230       single: string; __str__() (object method)
   1231       single: format() (built-in function); __str__() (object method)
   1232       single: print() (built-in function); __str__() (object method)
   1233 
   1234 
   1235 .. method:: object.__str__(self)
   1236 
   1237    Called by :func:`str(object) <str>` and the built-in functions
   1238    :func:`format` and :func:`print` to compute the "informal" or nicely
   1239    printable string representation of an object.  The return value must be a
   1240    :ref:`string <textseq>` object.
   1241 
   1242    This method differs from :meth:`object.__repr__` in that there is no
   1243    expectation that :meth:`__str__` return a valid Python expression: a more
   1244    convenient or concise representation can be used.
   1245 
   1246    The default implementation defined by the built-in type :class:`object`
   1247    calls :meth:`object.__repr__`.
   1248 
   1249    .. XXX what about subclasses of string?
   1250 
   1251 
   1252 .. method:: object.__bytes__(self)
   1253 
   1254    .. index:: builtin: bytes
   1255 
   1256    Called by :func:`bytes` to compute a byte-string representation of an
   1257    object. This should return a ``bytes`` object.
   1258 
   1259    .. index::
   1260       single: string; __format__() (object method)
   1261       pair: string; conversion
   1262       builtin: print
   1263 
   1264 
   1265 .. method:: object.__format__(self, format_spec)
   1266 
   1267    Called by the :func:`format` built-in function,
   1268    and by extension, evaluation of :ref:`formatted string literals
   1269    <f-strings>` and the :meth:`str.format` method, to produce a "formatted"
   1270    string representation of an object. The ``format_spec`` argument is
   1271    a string that contains a description of the formatting options desired.
   1272    The interpretation of the ``format_spec`` argument is up to the type
   1273    implementing :meth:`__format__`, however most classes will either
   1274    delegate formatting to one of the built-in types, or use a similar
   1275    formatting option syntax.
   1276 
   1277    See :ref:`formatspec` for a description of the standard formatting syntax.
   1278 
   1279    The return value must be a string object.
   1280 
   1281    .. versionchanged:: 3.4
   1282       The __format__ method of ``object`` itself raises a :exc:`TypeError`
   1283       if passed any non-empty string.
   1284 
   1285 
   1286 .. _richcmpfuncs:
   1287 .. method:: object.__lt__(self, other)
   1288             object.__le__(self, other)
   1289             object.__eq__(self, other)
   1290             object.__ne__(self, other)
   1291             object.__gt__(self, other)
   1292             object.__ge__(self, other)
   1293 
   1294    .. index::
   1295       single: comparisons
   1296 
   1297    These are the so-called "rich comparison" methods. The correspondence between
   1298    operator symbols and method names is as follows: ``x<y`` calls ``x.__lt__(y)``,
   1299    ``x<=y`` calls ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` calls
   1300    ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` calls
   1301    ``x.__ge__(y)``.
   1302 
   1303    A rich comparison method may return the singleton ``NotImplemented`` if it does
   1304    not implement the operation for a given pair of arguments. By convention,
   1305    ``False`` and ``True`` are returned for a successful comparison. However, these
   1306    methods can return any value, so if the comparison operator is used in a Boolean
   1307    context (e.g., in the condition of an ``if`` statement), Python will call
   1308    :func:`bool` on the value to determine if the result is true or false.
   1309 
   1310    By default, :meth:`__ne__` delegates to :meth:`__eq__` and
   1311    inverts the result unless it is ``NotImplemented``.  There are no other
   1312    implied relationships among the comparison operators, for example,
   1313    the truth of ``(x<y or x==y)`` does not imply ``x<=y``.
   1314    To automatically generate ordering operations from a single root operation,
   1315    see :func:`functools.total_ordering`.
   1316 
   1317    See the paragraph on :meth:`__hash__` for
   1318    some important notes on creating :term:`hashable` objects which support
   1319    custom comparison operations and are usable as dictionary keys.
   1320 
   1321    There are no swapped-argument versions of these methods (to be used when the
   1322    left argument does not support the operation but the right argument does);
   1323    rather, :meth:`__lt__` and :meth:`__gt__` are each other's reflection,
   1324    :meth:`__le__` and :meth:`__ge__` are each other's reflection, and
   1325    :meth:`__eq__` and :meth:`__ne__` are their own reflection.
   1326    If the operands are of different types, and right operand's type is
   1327    a direct or indirect subclass of the left operand's type,
   1328    the reflected method of the right operand has priority, otherwise
   1329    the left operand's method has priority.  Virtual subclassing is
   1330    not considered.
   1331 
   1332 .. method:: object.__hash__(self)
   1333 
   1334    .. index::
   1335       object: dictionary
   1336       builtin: hash
   1337 
   1338    Called by built-in function :func:`hash` and for operations on members of
   1339    hashed collections including :class:`set`, :class:`frozenset`, and
   1340    :class:`dict`.  :meth:`__hash__` should return an integer. The only required
   1341    property is that objects which compare equal have the same hash value; it is
   1342    advised to mix together the hash values of the components of the object that
   1343    also play a part in comparison of objects by packing them into a tuple and
   1344    hashing the tuple. Example::
   1345 
   1346        def __hash__(self):
   1347            return hash((self.name, self.nick, self.color))
   1348 
   1349    .. note::
   1350 
   1351      :func:`hash` truncates the value returned from an object's custom
   1352      :meth:`__hash__` method to the size of a :c:type:`Py_ssize_t`.  This is
   1353      typically 8 bytes on 64-bit builds and 4 bytes on 32-bit builds.  If an
   1354      object's   :meth:`__hash__` must interoperate on builds of different bit
   1355      sizes, be sure to check the width on all supported builds.  An easy way
   1356      to do this is with
   1357      ``python -c "import sys; print(sys.hash_info.width)"``.
   1358 
   1359    If a class does not define an :meth:`__eq__` method it should not define a
   1360    :meth:`__hash__` operation either; if it defines :meth:`__eq__` but not
   1361    :meth:`__hash__`, its instances will not be usable as items in hashable
   1362    collections.  If a class defines mutable objects and implements an
   1363    :meth:`__eq__` method, it should not implement :meth:`__hash__`, since the
   1364    implementation of hashable collections requires that a key's hash value is
   1365    immutable (if the object's hash value changes, it will be in the wrong hash
   1366    bucket).
   1367 
   1368    User-defined classes have :meth:`__eq__` and :meth:`__hash__` methods
   1369    by default; with them, all objects compare unequal (except with themselves)
   1370    and ``x.__hash__()`` returns an appropriate value such that ``x == y``
   1371    implies both that ``x is y`` and ``hash(x) == hash(y)``.
   1372 
   1373    A class that overrides :meth:`__eq__` and does not define :meth:`__hash__`
   1374    will have its :meth:`__hash__` implicitly set to ``None``.  When the
   1375    :meth:`__hash__` method of a class is ``None``, instances of the class will
   1376    raise an appropriate :exc:`TypeError` when a program attempts to retrieve
   1377    their hash value, and will also be correctly identified as unhashable when
   1378    checking ``isinstance(obj, collections.Hashable)``.
   1379 
   1380    If a class that overrides :meth:`__eq__` needs to retain the implementation
   1381    of :meth:`__hash__` from a parent class, the interpreter must be told this
   1382    explicitly by setting ``__hash__ = <ParentClass>.__hash__``.
   1383 
   1384    If a class that does not override :meth:`__eq__` wishes to suppress hash
   1385    support, it should include ``__hash__ = None`` in the class definition.
   1386    A class which defines its own :meth:`__hash__` that explicitly raises
   1387    a :exc:`TypeError` would be incorrectly identified as hashable by
   1388    an ``isinstance(obj, collections.Hashable)`` call.
   1389 
   1390 
   1391    .. note::
   1392 
   1393       By default, the :meth:`__hash__` values of str, bytes and datetime
   1394       objects are "salted" with an unpredictable random value.  Although they
   1395       remain constant within an individual Python process, they are not
   1396       predictable between repeated invocations of Python.
   1397 
   1398       This is intended to provide protection against a denial-of-service caused
   1399       by carefully-chosen inputs that exploit the worst case performance of a
   1400       dict insertion, O(n^2) complexity.  See
   1401       http://www.ocert.org/advisories/ocert-2011-003.html for details.
   1402 
   1403       Changing hash values affects the iteration order of dicts, sets and
   1404       other mappings.  Python has never made guarantees about this ordering
   1405       (and it typically varies between 32-bit and 64-bit builds).
   1406 
   1407       See also :envvar:`PYTHONHASHSEED`.
   1408 
   1409    .. versionchanged:: 3.3
   1410       Hash randomization is enabled by default.
   1411 
   1412 
   1413 .. method:: object.__bool__(self)
   1414 
   1415    .. index:: single: __len__() (mapping object method)
   1416 
   1417    Called to implement truth value testing and the built-in operation
   1418    ``bool()``; should return ``False`` or ``True``.  When this method is not
   1419    defined, :meth:`__len__` is called, if it is defined, and the object is
   1420    considered true if its result is nonzero.  If a class defines neither
   1421    :meth:`__len__` nor :meth:`__bool__`, all its instances are considered
   1422    true.
   1423 
   1424 
   1425 .. _attribute-access:
   1426 
   1427 Customizing attribute access
   1428 ----------------------------
   1429 
   1430 The following methods can be defined to customize the meaning of attribute
   1431 access (use of, assignment to, or deletion of ``x.name``) for class instances.
   1432 
   1433 .. XXX explain how descriptors interfere here!
   1434 
   1435 
   1436 .. method:: object.__getattr__(self, name)
   1437 
   1438    Called when an attribute lookup has not found the attribute in the usual places
   1439    (i.e. it is not an instance attribute nor is it found in the class tree for
   1440    ``self``).  ``name`` is the attribute name. This method should return the
   1441    (computed) attribute value or raise an :exc:`AttributeError` exception.
   1442 
   1443    Note that if the attribute is found through the normal mechanism,
   1444    :meth:`__getattr__` is not called.  (This is an intentional asymmetry between
   1445    :meth:`__getattr__` and :meth:`__setattr__`.) This is done both for efficiency
   1446    reasons and because otherwise :meth:`__getattr__` would have no way to access
   1447    other attributes of the instance.  Note that at least for instance variables,
   1448    you can fake total control by not inserting any values in the instance attribute
   1449    dictionary (but instead inserting them in another object).  See the
   1450    :meth:`__getattribute__` method below for a way to actually get total control
   1451    over attribute access.
   1452 
   1453 
   1454 .. method:: object.__getattribute__(self, name)
   1455 
   1456    Called unconditionally to implement attribute accesses for instances of the
   1457    class. If the class also defines :meth:`__getattr__`, the latter will not be
   1458    called unless :meth:`__getattribute__` either calls it explicitly or raises an
   1459    :exc:`AttributeError`. This method should return the (computed) attribute value
   1460    or raise an :exc:`AttributeError` exception. In order to avoid infinite
   1461    recursion in this method, its implementation should always call the base class
   1462    method with the same name to access any attributes it needs, for example,
   1463    ``object.__getattribute__(self, name)``.
   1464 
   1465    .. note::
   1466 
   1467       This method may still be bypassed when looking up special methods as the
   1468       result of implicit invocation via language syntax or built-in functions.
   1469       See :ref:`special-lookup`.
   1470 
   1471 
   1472 .. method:: object.__setattr__(self, name, value)
   1473 
   1474    Called when an attribute assignment is attempted.  This is called instead of
   1475    the normal mechanism (i.e. store the value in the instance dictionary).
   1476    *name* is the attribute name, *value* is the value to be assigned to it.
   1477 
   1478    If :meth:`__setattr__` wants to assign to an instance attribute, it should
   1479    call the base class method with the same name, for example,
   1480    ``object.__setattr__(self, name, value)``.
   1481 
   1482 
   1483 .. method:: object.__delattr__(self, name)
   1484 
   1485    Like :meth:`__setattr__` but for attribute deletion instead of assignment.  This
   1486    should only be implemented if ``del obj.name`` is meaningful for the object.
   1487 
   1488 
   1489 .. method:: object.__dir__(self)
   1490 
   1491    Called when :func:`dir` is called on the object. A sequence must be
   1492    returned. :func:`dir` converts the returned sequence to a list and sorts it.
   1493 
   1494 
   1495 .. _descriptors:
   1496 
   1497 Implementing Descriptors
   1498 ^^^^^^^^^^^^^^^^^^^^^^^^
   1499 
   1500 The following methods only apply when an instance of the class containing the
   1501 method (a so-called *descriptor* class) appears in an *owner* class (the
   1502 descriptor must be in either the owner's class dictionary or in the class
   1503 dictionary for one of its parents).  In the examples below, "the attribute"
   1504 refers to the attribute whose name is the key of the property in the owner
   1505 class' :attr:`~object.__dict__`.
   1506 
   1507 
   1508 .. method:: object.__get__(self, instance, owner)
   1509 
   1510    Called to get the attribute of the owner class (class attribute access) or of an
   1511    instance of that class (instance attribute access). *owner* is always the owner
   1512    class, while *instance* is the instance that the attribute was accessed through,
   1513    or ``None`` when the attribute is accessed through the *owner*.  This method
   1514    should return the (computed) attribute value or raise an :exc:`AttributeError`
   1515    exception.
   1516 
   1517 
   1518 .. method:: object.__set__(self, instance, value)
   1519 
   1520    Called to set the attribute on an instance *instance* of the owner class to a
   1521    new value, *value*.
   1522 
   1523 
   1524 .. method:: object.__delete__(self, instance)
   1525 
   1526    Called to delete the attribute on an instance *instance* of the owner class.
   1527 
   1528 
   1529 .. method:: object.__set_name__(self, owner, name)
   1530 
   1531    Called at the time the owning class *owner* is created. The
   1532    descriptor has been assigned to *name*.
   1533 
   1534    .. versionadded:: 3.6
   1535 
   1536 
   1537 The attribute :attr:`__objclass__` is interpreted by the :mod:`inspect` module
   1538 as specifying the class where this object was defined (setting this
   1539 appropriately can assist in runtime introspection of dynamic class attributes).
   1540 For callables, it may indicate that an instance of the given type (or a
   1541 subclass) is expected or required as the first positional argument (for example,
   1542 CPython sets this attribute for unbound methods that are implemented in C).
   1543 
   1544 
   1545 .. _descriptor-invocation:
   1546 
   1547 Invoking Descriptors
   1548 ^^^^^^^^^^^^^^^^^^^^
   1549 
   1550 In general, a descriptor is an object attribute with "binding behavior", one
   1551 whose attribute access has been overridden by methods in the descriptor
   1552 protocol:  :meth:`__get__`, :meth:`__set__`, and :meth:`__delete__`. If any of
   1553 those methods are defined for an object, it is said to be a descriptor.
   1554 
   1555 The default behavior for attribute access is to get, set, or delete the
   1556 attribute from an object's dictionary. For instance, ``a.x`` has a lookup chain
   1557 starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and
   1558 continuing through the base classes of ``type(a)`` excluding metaclasses.
   1559 
   1560 However, if the looked-up value is an object defining one of the descriptor
   1561 methods, then Python may override the default behavior and invoke the descriptor
   1562 method instead.  Where this occurs in the precedence chain depends on which
   1563 descriptor methods were defined and how they were called.
   1564 
   1565 The starting point for descriptor invocation is a binding, ``a.x``. How the
   1566 arguments are assembled depends on ``a``:
   1567 
   1568 Direct Call
   1569    The simplest and least common call is when user code directly invokes a
   1570    descriptor method:    ``x.__get__(a)``.
   1571 
   1572 Instance Binding
   1573    If binding to an object instance, ``a.x`` is transformed into the call:
   1574    ``type(a).__dict__['x'].__get__(a, type(a))``.
   1575 
   1576 Class Binding
   1577    If binding to a class, ``A.x`` is transformed into the call:
   1578    ``A.__dict__['x'].__get__(None, A)``.
   1579 
   1580 Super Binding
   1581    If ``a`` is an instance of :class:`super`, then the binding ``super(B,
   1582    obj).m()`` searches ``obj.__class__.__mro__`` for the base class ``A``
   1583    immediately preceding ``B`` and then invokes the descriptor with the call:
   1584    ``A.__dict__['m'].__get__(obj, obj.__class__)``.
   1585 
   1586 For instance bindings, the precedence of descriptor invocation depends on the
   1587 which descriptor methods are defined.  A descriptor can define any combination
   1588 of :meth:`__get__`, :meth:`__set__` and :meth:`__delete__`.  If it does not
   1589 define :meth:`__get__`, then accessing the attribute will return the descriptor
   1590 object itself unless there is a value in the object's instance dictionary.  If
   1591 the descriptor defines :meth:`__set__` and/or :meth:`__delete__`, it is a data
   1592 descriptor; if it defines neither, it is a non-data descriptor.  Normally, data
   1593 descriptors define both :meth:`__get__` and :meth:`__set__`, while non-data
   1594 descriptors have just the :meth:`__get__` method.  Data descriptors with
   1595 :meth:`__set__` and :meth:`__get__` defined always override a redefinition in an
   1596 instance dictionary.  In contrast, non-data descriptors can be overridden by
   1597 instances.
   1598 
   1599 Python methods (including :func:`staticmethod` and :func:`classmethod`) are
   1600 implemented as non-data descriptors.  Accordingly, instances can redefine and
   1601 override methods.  This allows individual instances to acquire behaviors that
   1602 differ from other instances of the same class.
   1603 
   1604 The :func:`property` function is implemented as a data descriptor. Accordingly,
   1605 instances cannot override the behavior of a property.
   1606 
   1607 
   1608 .. _slots:
   1609 
   1610 __slots__
   1611 ^^^^^^^^^
   1612 
   1613 By default, instances of classes have a dictionary for attribute storage.  This
   1614 wastes space for objects having very few instance variables.  The space
   1615 consumption can become acute when creating large numbers of instances.
   1616 
   1617 The default can be overridden by defining *__slots__* in a class definition.
   1618 The *__slots__* declaration takes a sequence of instance variables and reserves
   1619 just enough space in each instance to hold a value for each variable.  Space is
   1620 saved because *__dict__* is not created for each instance.
   1621 
   1622 
   1623 .. data:: object.__slots__
   1624 
   1625    This class variable can be assigned a string, iterable, or sequence of
   1626    strings with variable names used by instances.  *__slots__* reserves space
   1627    for the declared variables and prevents the automatic creation of *__dict__*
   1628    and *__weakref__* for each instance.
   1629 
   1630 
   1631 Notes on using *__slots__*
   1632 """"""""""""""""""""""""""
   1633 
   1634 * When inheriting from a class without *__slots__*, the *__dict__* attribute of
   1635   that class will always be accessible, so a *__slots__* definition in the
   1636   subclass is meaningless.
   1637 
   1638 * Without a *__dict__* variable, instances cannot be assigned new variables not
   1639   listed in the *__slots__* definition.  Attempts to assign to an unlisted
   1640   variable name raises :exc:`AttributeError`. If dynamic assignment of new
   1641   variables is desired, then add ``'__dict__'`` to the sequence of strings in
   1642   the *__slots__* declaration.
   1643 
   1644 * Without a *__weakref__* variable for each instance, classes defining
   1645   *__slots__* do not support weak references to its instances. If weak reference
   1646   support is needed, then add ``'__weakref__'`` to the sequence of strings in the
   1647   *__slots__* declaration.
   1648 
   1649 * *__slots__* are implemented at the class level by creating descriptors
   1650   (:ref:`descriptors`) for each variable name.  As a result, class attributes
   1651   cannot be used to set default values for instance variables defined by
   1652   *__slots__*; otherwise, the class attribute would overwrite the descriptor
   1653   assignment.
   1654 
   1655 * The action of a *__slots__* declaration is limited to the class where it is
   1656   defined.  As a result, subclasses will have a *__dict__* unless they also define
   1657   *__slots__* (which must only contain names of any *additional* slots).
   1658 
   1659 * If a class defines a slot also defined in a base class, the instance variable
   1660   defined by the base class slot is inaccessible (except by retrieving its
   1661   descriptor directly from the base class). This renders the meaning of the
   1662   program undefined.  In the future, a check may be added to prevent this.
   1663 
   1664 * Nonempty *__slots__* does not work for classes derived from "variable-length"
   1665   built-in types such as :class:`int`, :class:`bytes` and :class:`tuple`.
   1666 
   1667 * Any non-string iterable may be assigned to *__slots__*. Mappings may also be
   1668   used; however, in the future, special meaning may be assigned to the values
   1669   corresponding to each key.
   1670 
   1671 * *__class__* assignment works only if both classes have the same *__slots__*.
   1672 
   1673 
   1674 .. _class-customization:
   1675 
   1676 Customizing class creation
   1677 --------------------------
   1678 
   1679 Whenever a class inherits from another class, *__init_subclass__* is
   1680 called on that class. This way, it is possible to write classes which
   1681 change the behavior of subclasses. This is closely related to class
   1682 decorators, but where class decorators only affect the specific class they're
   1683 applied to, ``__init_subclass__`` solely applies to future subclasses of the
   1684 class defining the method.
   1685 
   1686 .. classmethod:: object.__init_subclass__(cls)
   1687 
   1688    This method is called whenever the containing class is subclassed.
   1689    *cls* is then the new subclass. If defined as a normal instance method,
   1690    this method is implicitly converted to a class method.
   1691 
   1692    Keyword arguments which are given to a new class are passed to
   1693    the parent's class ``__init_subclass__``. For compatibility with
   1694    other classes using ``__init_subclass__``, one should take out the
   1695    needed keyword arguments and pass the others over to the base
   1696    class, as in::
   1697 
   1698        class Philosopher:
   1699            def __init_subclass__(cls, default_name, **kwargs):
   1700                super().__init_subclass__(**kwargs)
   1701                cls.default_name = default_name
   1702 
   1703        class AustralianPhilosopher(Philosopher, default_name="Bruce"):
   1704            pass
   1705 
   1706    The default implementation ``object.__init_subclass__`` does
   1707    nothing, but raises an error if it is called with any arguments.
   1708 
   1709    .. note::
   1710 
   1711       The metaclass hint ``metaclass`` is consumed by the rest of the type
   1712       machinery, and is never passed to ``__init_subclass__`` implementations.
   1713       The actual metaclass (rather than the explicit hint) can be accessed as
   1714       ``type(cls)``.
   1715 
   1716    .. versionadded:: 3.6
   1717 
   1718 
   1719 .. _metaclasses:
   1720 
   1721 Metaclasses
   1722 ^^^^^^^^^^^
   1723 
   1724 .. index::
   1725     single: metaclass
   1726     builtin: type
   1727 
   1728 By default, classes are constructed using :func:`type`. The class body is
   1729 executed in a new namespace and the class name is bound locally to the
   1730 result of ``type(name, bases, namespace)``.
   1731 
   1732 The class creation process can be customized by passing the ``metaclass``
   1733 keyword argument in the class definition line, or by inheriting from an
   1734 existing class that included such an argument. In the following example,
   1735 both ``MyClass`` and ``MySubclass`` are instances of ``Meta``::
   1736 
   1737    class Meta(type):
   1738        pass
   1739 
   1740    class MyClass(metaclass=Meta):
   1741        pass
   1742 
   1743    class MySubclass(MyClass):
   1744        pass
   1745 
   1746 Any other keyword arguments that are specified in the class definition are
   1747 passed through to all metaclass operations described below.
   1748 
   1749 When a class definition is executed, the following steps occur:
   1750 
   1751 * the appropriate metaclass is determined
   1752 * the class namespace is prepared
   1753 * the class body is executed
   1754 * the class object is created
   1755 
   1756 Determining the appropriate metaclass
   1757 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   1758 .. index::
   1759     single: metaclass hint
   1760 
   1761 The appropriate metaclass for a class definition is determined as follows:
   1762 
   1763 * if no bases and no explicit metaclass are given, then :func:`type` is used
   1764 * if an explicit metaclass is given and it is *not* an instance of
   1765   :func:`type`, then it is used directly as the metaclass
   1766 * if an instance of :func:`type` is given as the explicit metaclass, or
   1767   bases are defined, then the most derived metaclass is used
   1768 
   1769 The most derived metaclass is selected from the explicitly specified
   1770 metaclass (if any) and the metaclasses (i.e. ``type(cls)``) of all specified
   1771 base classes. The most derived metaclass is one which is a subtype of *all*
   1772 of these candidate metaclasses. If none of the candidate metaclasses meets
   1773 that criterion, then the class definition will fail with ``TypeError``.
   1774 
   1775 
   1776 .. _prepare:
   1777 
   1778 Preparing the class namespace
   1779 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   1780 
   1781 .. index::
   1782     single: __prepare__ (metaclass method)
   1783 
   1784 Once the appropriate metaclass has been identified, then the class namespace
   1785 is prepared. If the metaclass has a ``__prepare__`` attribute, it is called
   1786 as ``namespace = metaclass.__prepare__(name, bases, **kwds)`` (where the
   1787 additional keyword arguments, if any, come from the class definition).
   1788 
   1789 If the metaclass has no ``__prepare__`` attribute, then the class namespace
   1790 is initialised as an empty ordered mapping.
   1791 
   1792 .. seealso::
   1793 
   1794    :pep:`3115` - Metaclasses in Python 3000
   1795       Introduced the ``__prepare__`` namespace hook
   1796 
   1797 
   1798 Executing the class body
   1799 ^^^^^^^^^^^^^^^^^^^^^^^^
   1800 
   1801 .. index::
   1802     single: class; body
   1803 
   1804 The class body is executed (approximately) as
   1805 ``exec(body, globals(), namespace)``. The key difference from a normal
   1806 call to :func:`exec` is that lexical scoping allows the class body (including
   1807 any methods) to reference names from the current and outer scopes when the
   1808 class definition occurs inside a function.
   1809 
   1810 However, even when the class definition occurs inside the function, methods
   1811 defined inside the class still cannot see names defined at the class scope.
   1812 Class variables must be accessed through the first parameter of instance or
   1813 class methods, or through the implicit lexically scoped ``__class__`` reference
   1814 described in the next section.
   1815 
   1816 .. _class-object-creation:
   1817 
   1818 Creating the class object
   1819 ^^^^^^^^^^^^^^^^^^^^^^^^^
   1820 
   1821 .. index::
   1822     single: __class__ (method cell)
   1823     single: __classcell__ (class namespace entry)
   1824 
   1825 
   1826 Once the class namespace has been populated by executing the class body,
   1827 the class object is created by calling
   1828 ``metaclass(name, bases, namespace, **kwds)`` (the additional keywords
   1829 passed here are the same as those passed to ``__prepare__``).
   1830 
   1831 This class object is the one that will be referenced by the zero-argument
   1832 form of :func:`super`. ``__class__`` is an implicit closure reference
   1833 created by the compiler if any methods in a class body refer to either
   1834 ``__class__`` or ``super``. This allows the zero argument form of
   1835 :func:`super` to correctly identify the class being defined based on
   1836 lexical scoping, while the class or instance that was used to make the
   1837 current call is identified based on the first argument passed to the method.
   1838 
   1839 .. impl-detail::
   1840 
   1841    In CPython 3.6 and later, the ``__class__`` cell is passed to the metaclass
   1842    as a ``__classcell__`` entry in the class namespace. If present, this must
   1843    be propagated up to the ``type.__new__`` call in order for the class to be
   1844    initialised correctly.
   1845    Failing to do so will result in a :exc:`DeprecationWarning` in Python 3.6,
   1846    and a :exc:`RuntimeWarning` in the future.
   1847 
   1848 When using the default metaclass :class:`type`, or any metaclass that ultimately
   1849 calls ``type.__new__``, the following additional customisation steps are
   1850 invoked after creating the class object:
   1851 
   1852 * first, ``type.__new__`` collects all of the descriptors in the class
   1853   namespace that define a :meth:`~object.__set_name__` method;
   1854 * second, all of these ``__set_name__`` methods are called with the class
   1855   being defined and the assigned name of that particular descriptor; and
   1856 * finally, the :meth:`~object.__init_subclass__` hook is called on the
   1857   immediate parent of the new class in its method resolution order.
   1858 
   1859 After the class object is created, it is passed to the class decorators
   1860 included in the class definition (if any) and the resulting object is bound
   1861 in the local namespace as the defined class.
   1862 
   1863 When a new class is created by ``type.__new__``, the object provided as the
   1864 namespace parameter is copied to a new ordered mapping and the original
   1865 object is discarded. The new copy is wrapped in a read-only proxy, which
   1866 becomes the :attr:`~object.__dict__` attribute of the class object.
   1867 
   1868 .. seealso::
   1869 
   1870    :pep:`3135` - New super
   1871       Describes the implicit ``__class__`` closure reference
   1872 
   1873 
   1874 Metaclass example
   1875 ^^^^^^^^^^^^^^^^^
   1876 
   1877 The potential uses for metaclasses are boundless. Some ideas that have been
   1878 explored include logging, interface checking, automatic delegation, automatic
   1879 property creation, proxies, frameworks, and automatic resource
   1880 locking/synchronization.
   1881 
   1882 Here is an example of a metaclass that uses an :class:`collections.OrderedDict`
   1883 to remember the order that class variables are defined::
   1884 
   1885     class OrderedClass(type):
   1886 
   1887         @classmethod
   1888         def __prepare__(metacls, name, bases, **kwds):
   1889             return collections.OrderedDict()
   1890 
   1891         def __new__(cls, name, bases, namespace, **kwds):
   1892             result = type.__new__(cls, name, bases, dict(namespace))
   1893             result.members = tuple(namespace)
   1894             return result
   1895 
   1896     class A(metaclass=OrderedClass):
   1897         def one(self): pass
   1898         def two(self): pass
   1899         def three(self): pass
   1900         def four(self): pass
   1901 
   1902     >>> A.members
   1903     ('__module__', 'one', 'two', 'three', 'four')
   1904 
   1905 When the class definition for *A* gets executed, the process begins with
   1906 calling the metaclass's :meth:`__prepare__` method which returns an empty
   1907 :class:`collections.OrderedDict`.  That mapping records the methods and
   1908 attributes of *A* as they are defined within the body of the class statement.
   1909 Once those definitions are executed, the ordered dictionary is fully populated
   1910 and the metaclass's :meth:`__new__` method gets invoked.  That method builds
   1911 the new type and it saves the ordered dictionary keys in an attribute
   1912 called ``members``.
   1913 
   1914 
   1915 Customizing instance and subclass checks
   1916 ----------------------------------------
   1917 
   1918 The following methods are used to override the default behavior of the
   1919 :func:`isinstance` and :func:`issubclass` built-in functions.
   1920 
   1921 In particular, the metaclass :class:`abc.ABCMeta` implements these methods in
   1922 order to allow the addition of Abstract Base Classes (ABCs) as "virtual base
   1923 classes" to any class or type (including built-in types), including other
   1924 ABCs.
   1925 
   1926 .. method:: class.__instancecheck__(self, instance)
   1927 
   1928    Return true if *instance* should be considered a (direct or indirect)
   1929    instance of *class*. If defined, called to implement ``isinstance(instance,
   1930    class)``.
   1931 
   1932 
   1933 .. method:: class.__subclasscheck__(self, subclass)
   1934 
   1935    Return true if *subclass* should be considered a (direct or indirect)
   1936    subclass of *class*.  If defined, called to implement ``issubclass(subclass,
   1937    class)``.
   1938 
   1939 
   1940 Note that these methods are looked up on the type (metaclass) of a class.  They
   1941 cannot be defined as class methods in the actual class.  This is consistent with
   1942 the lookup of special methods that are called on instances, only in this
   1943 case the instance is itself a class.
   1944 
   1945 .. seealso::
   1946 
   1947    :pep:`3119` - Introducing Abstract Base Classes
   1948       Includes the specification for customizing :func:`isinstance` and
   1949       :func:`issubclass` behavior through :meth:`~class.__instancecheck__` and
   1950       :meth:`~class.__subclasscheck__`, with motivation for this functionality
   1951       in the context of adding Abstract Base Classes (see the :mod:`abc`
   1952       module) to the language.
   1953 
   1954 
   1955 .. _callable-types:
   1956 
   1957 Emulating callable objects
   1958 --------------------------
   1959 
   1960 
   1961 .. method:: object.__call__(self[, args...])
   1962 
   1963    .. index:: pair: call; instance
   1964 
   1965    Called when the instance is "called" as a function; if this method is defined,
   1966    ``x(arg1, arg2, ...)`` is a shorthand for ``x.__call__(arg1, arg2, ...)``.
   1967 
   1968 
   1969 .. _sequence-types:
   1970 
   1971 Emulating container types
   1972 -------------------------
   1973 
   1974 The following methods can be defined to implement container objects.  Containers
   1975 usually are sequences (such as lists or tuples) or mappings (like dictionaries),
   1976 but can represent other containers as well.  The first set of methods is used
   1977 either to emulate a sequence or to emulate a mapping; the difference is that for
   1978 a sequence, the allowable keys should be the integers *k* for which ``0 <= k <
   1979 N`` where *N* is the length of the sequence, or slice objects, which define a
   1980 range of items.  It is also recommended that mappings provide the methods
   1981 :meth:`keys`, :meth:`values`, :meth:`items`, :meth:`get`, :meth:`clear`,
   1982 :meth:`setdefault`, :meth:`pop`, :meth:`popitem`, :meth:`!copy`, and
   1983 :meth:`update` behaving similar to those for Python's standard dictionary
   1984 objects.  The :mod:`collections` module provides a
   1985 :class:`~collections.abc.MutableMapping`
   1986 abstract base class to help create those methods from a base set of
   1987 :meth:`__getitem__`, :meth:`__setitem__`, :meth:`__delitem__`, and :meth:`keys`.
   1988 Mutable sequences should provide methods :meth:`append`, :meth:`count`,
   1989 :meth:`index`, :meth:`extend`, :meth:`insert`, :meth:`pop`, :meth:`remove`,
   1990 :meth:`reverse` and :meth:`sort`, like Python standard list objects.  Finally,
   1991 sequence types should implement addition (meaning concatenation) and
   1992 multiplication (meaning repetition) by defining the methods :meth:`__add__`,
   1993 :meth:`__radd__`, :meth:`__iadd__`, :meth:`__mul__`, :meth:`__rmul__` and
   1994 :meth:`__imul__` described below; they should not define other numerical
   1995 operators.  It is recommended that both mappings and sequences implement the
   1996 :meth:`__contains__` method to allow efficient use of the ``in`` operator; for
   1997 mappings, ``in`` should search the mapping's keys; for sequences, it should
   1998 search through the values.  It is further recommended that both mappings and
   1999 sequences implement the :meth:`__iter__` method to allow efficient iteration
   2000 through the container; for mappings, :meth:`__iter__` should be the same as
   2001 :meth:`keys`; for sequences, it should iterate through the values.
   2002 
   2003 .. method:: object.__len__(self)
   2004 
   2005    .. index::
   2006       builtin: len
   2007       single: __bool__() (object method)
   2008 
   2009    Called to implement the built-in function :func:`len`.  Should return the length
   2010    of the object, an integer ``>=`` 0.  Also, an object that doesn't define a
   2011    :meth:`__bool__` method and whose :meth:`__len__` method returns zero is
   2012    considered to be false in a Boolean context.
   2013 
   2014 
   2015 .. method:: object.__length_hint__(self)
   2016 
   2017    Called to implement :func:`operator.length_hint`. Should return an estimated
   2018    length for the object (which may be greater or less than the actual length).
   2019    The length must be an integer ``>=`` 0. This method is purely an
   2020    optimization and is never required for correctness.
   2021 
   2022    .. versionadded:: 3.4
   2023 
   2024 .. note::
   2025 
   2026    Slicing is done exclusively with the following three methods.  A call like ::
   2027 
   2028       a[1:2] = b
   2029 
   2030    is translated to ::
   2031 
   2032       a[slice(1, 2, None)] = b
   2033 
   2034    and so forth.  Missing slice items are always filled in with ``None``.
   2035 
   2036 
   2037 .. method:: object.__getitem__(self, key)
   2038 
   2039    .. index:: object: slice
   2040 
   2041    Called to implement evaluation of ``self[key]``. For sequence types, the
   2042    accepted keys should be integers and slice objects.  Note that the special
   2043    interpretation of negative indexes (if the class wishes to emulate a sequence
   2044    type) is up to the :meth:`__getitem__` method. If *key* is of an inappropriate
   2045    type, :exc:`TypeError` may be raised; if of a value outside the set of indexes
   2046    for the sequence (after any special interpretation of negative values),
   2047    :exc:`IndexError` should be raised. For mapping types, if *key* is missing (not
   2048    in the container), :exc:`KeyError` should be raised.
   2049 
   2050    .. note::
   2051 
   2052       :keyword:`for` loops expect that an :exc:`IndexError` will be raised for illegal
   2053       indexes to allow proper detection of the end of the sequence.
   2054 
   2055 
   2056 .. method:: object.__missing__(self, key)
   2057 
   2058    Called by :class:`dict`\ .\ :meth:`__getitem__` to implement ``self[key]`` for dict subclasses
   2059    when key is not in the dictionary.
   2060 
   2061 
   2062 .. method:: object.__setitem__(self, key, value)
   2063 
   2064    Called to implement assignment to ``self[key]``.  Same note as for
   2065    :meth:`__getitem__`.  This should only be implemented for mappings if the
   2066    objects support changes to the values for keys, or if new keys can be added, or
   2067    for sequences if elements can be replaced.  The same exceptions should be raised
   2068    for improper *key* values as for the :meth:`__getitem__` method.
   2069 
   2070 
   2071 .. method:: object.__delitem__(self, key)
   2072 
   2073    Called to implement deletion of ``self[key]``.  Same note as for
   2074    :meth:`__getitem__`.  This should only be implemented for mappings if the
   2075    objects support removal of keys, or for sequences if elements can be removed
   2076    from the sequence.  The same exceptions should be raised for improper *key*
   2077    values as for the :meth:`__getitem__` method.
   2078 
   2079 
   2080 .. method:: object.__iter__(self)
   2081 
   2082    This method is called when an iterator is required for a container. This method
   2083    should return a new iterator object that can iterate over all the objects in the
   2084    container.  For mappings, it should iterate over the keys of the container.
   2085 
   2086    Iterator objects also need to implement this method; they are required to return
   2087    themselves.  For more information on iterator objects, see :ref:`typeiter`.
   2088 
   2089 
   2090 .. method:: object.__reversed__(self)
   2091 
   2092    Called (if present) by the :func:`reversed` built-in to implement
   2093    reverse iteration.  It should return a new iterator object that iterates
   2094    over all the objects in the container in reverse order.
   2095 
   2096    If the :meth:`__reversed__` method is not provided, the :func:`reversed`
   2097    built-in will fall back to using the sequence protocol (:meth:`__len__` and
   2098    :meth:`__getitem__`).  Objects that support the sequence protocol should
   2099    only provide :meth:`__reversed__` if they can provide an implementation
   2100    that is more efficient than the one provided by :func:`reversed`.
   2101 
   2102 
   2103 The membership test operators (:keyword:`in` and :keyword:`not in`) are normally
   2104 implemented as an iteration through a sequence.  However, container objects can
   2105 supply the following special method with a more efficient implementation, which
   2106 also does not require the object be a sequence.
   2107 
   2108 .. method:: object.__contains__(self, item)
   2109 
   2110    Called to implement membership test operators.  Should return true if *item*
   2111    is in *self*, false otherwise.  For mapping objects, this should consider the
   2112    keys of the mapping rather than the values or the key-item pairs.
   2113 
   2114    For objects that don't define :meth:`__contains__`, the membership test first
   2115    tries iteration via :meth:`__iter__`, then the old sequence iteration
   2116    protocol via :meth:`__getitem__`, see :ref:`this section in the language
   2117    reference <membership-test-details>`.
   2118 
   2119 
   2120 .. _numeric-types:
   2121 
   2122 Emulating numeric types
   2123 -----------------------
   2124 
   2125 The following methods can be defined to emulate numeric objects. Methods
   2126 corresponding to operations that are not supported by the particular kind of
   2127 number implemented (e.g., bitwise operations for non-integral numbers) should be
   2128 left undefined.
   2129 
   2130 
   2131 .. method:: object.__add__(self, other)
   2132             object.__sub__(self, other)
   2133             object.__mul__(self, other)
   2134             object.__matmul__(self, other)
   2135             object.__truediv__(self, other)
   2136             object.__floordiv__(self, other)
   2137             object.__mod__(self, other)
   2138             object.__divmod__(self, other)
   2139             object.__pow__(self, other[, modulo])
   2140             object.__lshift__(self, other)
   2141             object.__rshift__(self, other)
   2142             object.__and__(self, other)
   2143             object.__xor__(self, other)
   2144             object.__or__(self, other)
   2145 
   2146    .. index::
   2147       builtin: divmod
   2148       builtin: pow
   2149       builtin: pow
   2150 
   2151    These methods are called to implement the binary arithmetic operations
   2152    (``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`,
   2153    :func:`pow`, ``**``, ``<<``, ``>>``, ``&``, ``^``, ``|``).  For instance, to
   2154    evaluate the expression ``x + y``, where *x* is an instance of a class that
   2155    has an :meth:`__add__` method, ``x.__add__(y)`` is called.  The
   2156    :meth:`__divmod__` method should be the equivalent to using
   2157    :meth:`__floordiv__` and :meth:`__mod__`; it should not be related to
   2158    :meth:`__truediv__`.  Note that :meth:`__pow__` should be defined to accept
   2159    an optional third argument if the ternary version of the built-in :func:`pow`
   2160    function is to be supported.
   2161 
   2162    If one of those methods does not support the operation with the supplied
   2163    arguments, it should return ``NotImplemented``.
   2164 
   2165 
   2166 .. method:: object.__radd__(self, other)
   2167             object.__rsub__(self, other)
   2168             object.__rmul__(self, other)
   2169             object.__rmatmul__(self, other)
   2170             object.__rtruediv__(self, other)
   2171             object.__rfloordiv__(self, other)
   2172             object.__rmod__(self, other)
   2173             object.__rdivmod__(self, other)
   2174             object.__rpow__(self, other)
   2175             object.__rlshift__(self, other)
   2176             object.__rrshift__(self, other)
   2177             object.__rand__(self, other)
   2178             object.__rxor__(self, other)
   2179             object.__ror__(self, other)
   2180 
   2181    .. index::
   2182       builtin: divmod
   2183       builtin: pow
   2184 
   2185    These methods are called to implement the binary arithmetic operations
   2186    (``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`,
   2187    :func:`pow`, ``**``, ``<<``, ``>>``, ``&``, ``^``, ``|``) with reflected
   2188    (swapped) operands.  These functions are only called if the left operand does
   2189    not support the corresponding operation [#]_ and the operands are of different
   2190    types. [#]_ For instance, to evaluate the expression ``x - y``, where *y* is
   2191    an instance of a class that has an :meth:`__rsub__` method, ``y.__rsub__(x)``
   2192    is called if ``x.__sub__(y)`` returns *NotImplemented*.
   2193 
   2194    .. index:: builtin: pow
   2195 
   2196    Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the
   2197    coercion rules would become too complicated).
   2198 
   2199    .. note::
   2200 
   2201       If the right operand's type is a subclass of the left operand's type and that
   2202       subclass provides the reflected method for the operation, this method will be
   2203       called before the left operand's non-reflected method.  This behavior allows
   2204       subclasses to override their ancestors' operations.
   2205 
   2206 
   2207 .. method:: object.__iadd__(self, other)
   2208             object.__isub__(self, other)
   2209             object.__imul__(self, other)
   2210             object.__imatmul__(self, other)
   2211             object.__itruediv__(self, other)
   2212             object.__ifloordiv__(self, other)
   2213             object.__imod__(self, other)
   2214             object.__ipow__(self, other[, modulo])
   2215             object.__ilshift__(self, other)
   2216             object.__irshift__(self, other)
   2217             object.__iand__(self, other)
   2218             object.__ixor__(self, other)
   2219             object.__ior__(self, other)
   2220 
   2221    These methods are called to implement the augmented arithmetic assignments
   2222    (``+=``, ``-=``, ``*=``, ``@=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``,
   2223    ``>>=``, ``&=``, ``^=``, ``|=``).  These methods should attempt to do the
   2224    operation in-place (modifying *self*) and return the result (which could be,
   2225    but does not have to be, *self*).  If a specific method is not defined, the
   2226    augmented assignment falls back to the normal methods.  For instance, if *x*
   2227    is an instance of a class with an :meth:`__iadd__` method, ``x += y`` is
   2228    equivalent to ``x = x.__iadd__(y)`` . Otherwise, ``x.__add__(y)`` and
   2229    ``y.__radd__(x)`` are considered, as with the evaluation of ``x + y``. In
   2230    certain situations, augmented assignment can result in unexpected errors (see
   2231    :ref:`faq-augmented-assignment-tuple-error`), but this behavior is in fact
   2232    part of the data model.
   2233 
   2234 
   2235 .. method:: object.__neg__(self)
   2236             object.__pos__(self)
   2237             object.__abs__(self)
   2238             object.__invert__(self)
   2239 
   2240    .. index:: builtin: abs
   2241 
   2242    Called to implement the unary arithmetic operations (``-``, ``+``, :func:`abs`
   2243    and ``~``).
   2244 
   2245 
   2246 .. method:: object.__complex__(self)
   2247             object.__int__(self)
   2248             object.__float__(self)
   2249             object.__round__(self, [,n])
   2250 
   2251    .. index::
   2252       builtin: complex
   2253       builtin: int
   2254       builtin: float
   2255       builtin: round
   2256 
   2257    Called to implement the built-in functions :func:`complex`,
   2258    :func:`int`, :func:`float` and :func:`round`.  Should return a value
   2259    of the appropriate type.
   2260 
   2261 
   2262 .. method:: object.__index__(self)
   2263 
   2264    Called to implement :func:`operator.index`, and whenever Python needs to
   2265    losslessly convert the numeric object to an integer object (such as in
   2266    slicing, or in the built-in :func:`bin`, :func:`hex` and :func:`oct`
   2267    functions). Presence of this method indicates that the numeric object is
   2268    an integer type.  Must return an integer.
   2269 
   2270    .. note::
   2271 
   2272       In order to have a coherent integer type class, when :meth:`__index__` is
   2273       defined :meth:`__int__` should also be defined, and both should return
   2274       the same value.
   2275 
   2276 
   2277 .. _context-managers:
   2278 
   2279 With Statement Context Managers
   2280 -------------------------------
   2281 
   2282 A :dfn:`context manager` is an object that defines the runtime context to be
   2283 established when executing a :keyword:`with` statement. The context manager
   2284 handles the entry into, and the exit from, the desired runtime context for the
   2285 execution of the block of code.  Context managers are normally invoked using the
   2286 :keyword:`with` statement (described in section :ref:`with`), but can also be
   2287 used by directly invoking their methods.
   2288 
   2289 .. index::
   2290    statement: with
   2291    single: context manager
   2292 
   2293 Typical uses of context managers include saving and restoring various kinds of
   2294 global state, locking and unlocking resources, closing opened files, etc.
   2295 
   2296 For more information on context managers, see :ref:`typecontextmanager`.
   2297 
   2298 
   2299 .. method:: object.__enter__(self)
   2300 
   2301    Enter the runtime context related to this object. The :keyword:`with` statement
   2302    will bind this method's return value to the target(s) specified in the
   2303    :keyword:`as` clause of the statement, if any.
   2304 
   2305 
   2306 .. method:: object.__exit__(self, exc_type, exc_value, traceback)
   2307 
   2308    Exit the runtime context related to this object. The parameters describe the
   2309    exception that caused the context to be exited. If the context was exited
   2310    without an exception, all three arguments will be :const:`None`.
   2311 
   2312    If an exception is supplied, and the method wishes to suppress the exception
   2313    (i.e., prevent it from being propagated), it should return a true value.
   2314    Otherwise, the exception will be processed normally upon exit from this method.
   2315 
   2316    Note that :meth:`__exit__` methods should not reraise the passed-in exception;
   2317    this is the caller's responsibility.
   2318 
   2319 
   2320 .. seealso::
   2321 
   2322    :pep:`343` - The "with" statement
   2323       The specification, background, and examples for the Python :keyword:`with`
   2324       statement.
   2325 
   2326 
   2327 .. _special-lookup:
   2328 
   2329 Special method lookup
   2330 ---------------------
   2331 
   2332 For custom classes, implicit invocations of special methods are only guaranteed
   2333 to work correctly if defined on an object's type, not in the object's instance
   2334 dictionary.  That behaviour is the reason why the following code raises an
   2335 exception::
   2336 
   2337    >>> class C:
   2338    ...     pass
   2339    ...
   2340    >>> c = C()
   2341    >>> c.__len__ = lambda: 5
   2342    >>> len(c)
   2343    Traceback (most recent call last):
   2344      File "<stdin>", line 1, in <module>
   2345    TypeError: object of type 'C' has no len()
   2346 
   2347 The rationale behind this behaviour lies with a number of special methods such
   2348 as :meth:`__hash__` and :meth:`__repr__` that are implemented by all objects,
   2349 including type objects. If the implicit lookup of these methods used the
   2350 conventional lookup process, they would fail when invoked on the type object
   2351 itself::
   2352 
   2353    >>> 1 .__hash__() == hash(1)
   2354    True
   2355    >>> int.__hash__() == hash(int)
   2356    Traceback (most recent call last):
   2357      File "<stdin>", line 1, in <module>
   2358    TypeError: descriptor '__hash__' of 'int' object needs an argument
   2359 
   2360 Incorrectly attempting to invoke an unbound method of a class in this way is
   2361 sometimes referred to as 'metaclass confusion', and is avoided by bypassing
   2362 the instance when looking up special methods::
   2363 
   2364    >>> type(1).__hash__(1) == hash(1)
   2365    True
   2366    >>> type(int).__hash__(int) == hash(int)
   2367    True
   2368 
   2369 In addition to bypassing any instance attributes in the interest of
   2370 correctness, implicit special method lookup generally also bypasses the
   2371 :meth:`__getattribute__` method even of the object's metaclass::
   2372 
   2373    >>> class Meta(type):
   2374    ...     def __getattribute__(*args):
   2375    ...         print("Metaclass getattribute invoked")
   2376    ...         return type.__getattribute__(*args)
   2377    ...
   2378    >>> class C(object, metaclass=Meta):
   2379    ...     def __len__(self):
   2380    ...         return 10
   2381    ...     def __getattribute__(*args):
   2382    ...         print("Class getattribute invoked")
   2383    ...         return object.__getattribute__(*args)
   2384    ...
   2385    >>> c = C()
   2386    >>> c.__len__()                 # Explicit lookup via instance
   2387    Class getattribute invoked
   2388    10
   2389    >>> type(c).__len__(c)          # Explicit lookup via type
   2390    Metaclass getattribute invoked
   2391    10
   2392    >>> len(c)                      # Implicit lookup
   2393    10
   2394 
   2395 Bypassing the :meth:`__getattribute__` machinery in this fashion
   2396 provides significant scope for speed optimisations within the
   2397 interpreter, at the cost of some flexibility in the handling of
   2398 special methods (the special method *must* be set on the class
   2399 object itself in order to be consistently invoked by the interpreter).
   2400 
   2401 
   2402 .. index::
   2403    single: coroutine
   2404 
   2405 Coroutines
   2406 ==========
   2407 
   2408 
   2409 Awaitable Objects
   2410 -----------------
   2411 
   2412 An :term:`awaitable` object generally implements an :meth:`__await__` method.
   2413 :term:`Coroutine` objects returned from :keyword:`async def` functions
   2414 are awaitable.
   2415 
   2416 .. note::
   2417 
   2418    The :term:`generator iterator` objects returned from generators
   2419    decorated with :func:`types.coroutine` or :func:`asyncio.coroutine`
   2420    are also awaitable, but they do not implement :meth:`__await__`.
   2421 
   2422 .. method:: object.__await__(self)
   2423 
   2424    Must return an :term:`iterator`.  Should be used to implement
   2425    :term:`awaitable` objects.  For instance, :class:`asyncio.Future` implements
   2426    this method to be compatible with the :keyword:`await` expression.
   2427 
   2428 .. versionadded:: 3.5
   2429 
   2430 .. seealso:: :pep:`492` for additional information about awaitable objects.
   2431 
   2432 
   2433 .. _coroutine-objects:
   2434 
   2435 Coroutine Objects
   2436 -----------------
   2437 
   2438 :term:`Coroutine` objects are :term:`awaitable` objects.
   2439 A coroutine's execution can be controlled by calling :meth:`__await__` and
   2440 iterating over the result.  When the coroutine has finished executing and
   2441 returns, the iterator raises :exc:`StopIteration`, and the exception's
   2442 :attr:`~StopIteration.value` attribute holds the return value.  If the
   2443 coroutine raises an exception, it is propagated by the iterator.  Coroutines
   2444 should not directly raise unhandled :exc:`StopIteration` exceptions.
   2445 
   2446 Coroutines also have the methods listed below, which are analogous to
   2447 those of generators (see :ref:`generator-methods`).  However, unlike
   2448 generators, coroutines do not directly support iteration.
   2449 
   2450 .. versionchanged:: 3.5.2
   2451    It is a :exc:`RuntimeError` to await on a coroutine more than once.
   2452 
   2453 
   2454 .. method:: coroutine.send(value)
   2455 
   2456    Starts or resumes execution of the coroutine.  If *value* is ``None``,
   2457    this is equivalent to advancing the iterator returned by
   2458    :meth:`__await__`.  If *value* is not ``None``, this method delegates
   2459    to the :meth:`~generator.send` method of the iterator that caused
   2460    the coroutine to suspend.  The result (return value,
   2461    :exc:`StopIteration`, or other exception) is the same as when
   2462    iterating over the :meth:`__await__` return value, described above.
   2463 
   2464 .. method:: coroutine.throw(type[, value[, traceback]])
   2465 
   2466    Raises the specified exception in the coroutine.  This method delegates
   2467    to the :meth:`~generator.throw` method of the iterator that caused
   2468    the coroutine to suspend, if it has such a method.  Otherwise,
   2469    the exception is raised at the suspension point.  The result
   2470    (return value, :exc:`StopIteration`, or other exception) is the same as
   2471    when iterating over the :meth:`__await__` return value, described
   2472    above.  If the exception is not caught in the coroutine, it propagates
   2473    back to the caller.
   2474 
   2475 .. method:: coroutine.close()
   2476 
   2477    Causes the coroutine to clean itself up and exit.  If the coroutine
   2478    is suspended, this method first delegates to the :meth:`~generator.close`
   2479    method of the iterator that caused the coroutine to suspend, if it
   2480    has such a method.  Then it raises :exc:`GeneratorExit` at the
   2481    suspension point, causing the coroutine to immediately clean itself up.
   2482    Finally, the coroutine is marked as having finished executing, even if
   2483    it was never started.
   2484 
   2485    Coroutine objects are automatically closed using the above process when
   2486    they are about to be destroyed.
   2487 
   2488 .. _async-iterators:
   2489 
   2490 Asynchronous Iterators
   2491 ----------------------
   2492 
   2493 An *asynchronous iterable* is able to call asynchronous code in its
   2494 ``__aiter__`` implementation, and an *asynchronous iterator* can call
   2495 asynchronous code in its ``__anext__`` method.
   2496 
   2497 Asynchronous iterators can be used in an :keyword:`async for` statement.
   2498 
   2499 .. method:: object.__aiter__(self)
   2500 
   2501    Must return an *asynchronous iterator* object.
   2502 
   2503 .. method:: object.__anext__(self)
   2504 
   2505    Must return an *awaitable* resulting in a next value of the iterator.  Should
   2506    raise a :exc:`StopAsyncIteration` error when the iteration is over.
   2507 
   2508 An example of an asynchronous iterable object::
   2509 
   2510     class Reader:
   2511         async def readline(self):
   2512             ...
   2513 
   2514         def __aiter__(self):
   2515             return self
   2516 
   2517         async def __anext__(self):
   2518             val = await self.readline()
   2519             if val == b'':
   2520                 raise StopAsyncIteration
   2521             return val
   2522 
   2523 .. versionadded:: 3.5
   2524 
   2525 .. note::
   2526 
   2527    .. versionchanged:: 3.5.2
   2528       Starting with CPython 3.5.2, ``__aiter__`` can directly return
   2529       :term:`asynchronous iterators <asynchronous iterator>`.  Returning
   2530       an :term:`awaitable` object will result in a
   2531       :exc:`PendingDeprecationWarning`.
   2532 
   2533       The recommended way of writing backwards compatible code in
   2534       CPython 3.5.x is to continue returning awaitables from
   2535       ``__aiter__``.  If you want to avoid the PendingDeprecationWarning
   2536       and keep the code backwards compatible, the following decorator
   2537       can be used::
   2538 
   2539           import functools
   2540           import sys
   2541 
   2542           if sys.version_info < (3, 5, 2):
   2543               def aiter_compat(func):
   2544                   @functools.wraps(func)
   2545                   async def wrapper(self):
   2546                       return func(self)
   2547                   return wrapper
   2548           else:
   2549               def aiter_compat(func):
   2550                   return func
   2551 
   2552       Example::
   2553 
   2554           class AsyncIterator:
   2555 
   2556               @aiter_compat
   2557               def __aiter__(self):
   2558                   return self
   2559 
   2560               async def __anext__(self):
   2561                   ...
   2562 
   2563       Starting with CPython 3.6, the :exc:`PendingDeprecationWarning`
   2564       will be replaced with the :exc:`DeprecationWarning`.
   2565       In CPython 3.7, returning an awaitable from ``__aiter__`` will
   2566       result in a :exc:`RuntimeError`.
   2567 
   2568 
   2569 Asynchronous Context Managers
   2570 -----------------------------
   2571 
   2572 An *asynchronous context manager* is a *context manager* that is able to
   2573 suspend execution in its ``__aenter__`` and ``__aexit__`` methods.
   2574 
   2575 Asynchronous context managers can be used in an :keyword:`async with` statement.
   2576 
   2577 .. method:: object.__aenter__(self)
   2578 
   2579    This method is semantically similar to the :meth:`__enter__`, with only
   2580    difference that it must return an *awaitable*.
   2581 
   2582 .. method:: object.__aexit__(self, exc_type, exc_value, traceback)
   2583 
   2584    This method is semantically similar to the :meth:`__exit__`, with only
   2585    difference that it must return an *awaitable*.
   2586 
   2587 An example of an asynchronous context manager class::
   2588 
   2589     class AsyncContextManager:
   2590         async def __aenter__(self):
   2591             await log('entering context')
   2592 
   2593         async def __aexit__(self, exc_type, exc, tb):
   2594             await log('exiting context')
   2595 
   2596 .. versionadded:: 3.5
   2597 
   2598 
   2599 .. rubric:: Footnotes
   2600 
   2601 .. [#] It *is* possible in some cases to change an object's type, under certain
   2602    controlled conditions. It generally isn't a good idea though, since it can
   2603    lead to some very strange behaviour if it is handled incorrectly.
   2604 
   2605 .. [#] The :meth:`__hash__`, :meth:`__iter__`, :meth:`__reversed__`, and
   2606    :meth:`__contains__` methods have special handling for this; others
   2607    will still raise a :exc:`TypeError`, but may do so by relying on
   2608    the behavior that ``None`` is not callable.
   2609 
   2610 .. [#] "Does not support" here means that the class has no such method, or
   2611    the method returns ``NotImplemented``.  Do not set the method to
   2612    ``None`` if you want to force fallback to the right operand's reflected
   2613    methodthat will instead have the opposite effect of explicitly
   2614    *blocking* such fallback.
   2615 
   2616 .. [#] For operands of the same type, it is assumed that if the non-reflected method
   2617    (such as :meth:`__add__`) fails the operation is not supported, which is why the
   2618    reflected method is not called.
   2619