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