Issue #5170: Fixed regression caused when fixing #5768.
[python.git] / Doc / reference / datamodel.rst
blobb87909df27c4517aa364ca60ec82f47b6a6b5e80
2 .. _datamodel:
4 **********
5 Data model
6 **********
9 .. _objects:
11 Objects, values and types
12 =========================
14 .. index::
15    single: object
16    single: data
18 :dfn:`Objects` are Python's abstraction for data.  All data in a Python program
19 is represented by objects or by relations between objects. (In a sense, and in
20 conformance to Von Neumann's model of a "stored program computer," code is also
21 represented by objects.)
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
32 Every object has an identity, a type and a value.  An object's *identity* never
33 changes once it has been created; you may think of it as the object's address in
34 memory.  The ':keyword:`is`' operator compares the identity of two objects; the
35 :func:`id` function returns an integer representing its identity (currently
36 implemented as its address). An object's :dfn:`type` is also unchangeable. [#]_
37 An object's type determines the operations that the object supports (e.g., "does
38 it have a length?") and also defines the possible values for objects of that
39 type.  The :func:`type` function returns an object's type (which is an object
40 itself).  The *value* of some objects can change.  Objects whose value can
41 change are said to be *mutable*; objects whose value is unchangeable once they
42 are created are called *immutable*. (The value of an immutable container object
43 that contains a reference to a mutable object can change when the latter's value
44 is changed; however the container is still considered immutable, because the
45 collection of objects it contains cannot be changed.  So, immutability is not
46 strictly the same as having an unchangeable value, it is more subtle.) An
47 object's mutability is determined by its type; for instance, numbers, strings
48 and tuples are immutable, while dictionaries and lists are mutable.
50 .. index::
51    single: garbage collection
52    single: reference counting
53    single: unreachable object
55 Objects are never explicitly destroyed; however, when they become unreachable
56 they may be garbage-collected.  An implementation is allowed to postpone garbage
57 collection or omit it altogether --- it is a matter of implementation quality
58 how garbage collection is implemented, as long as no objects are collected that
59 are still reachable.  (Implementation note: CPython currently uses a
60 reference-counting scheme with (optional) delayed detection of cyclically linked
61 garbage, which collects most objects as soon as they become unreachable, but is
62 not guaranteed to collect garbage containing circular references.  See the
63 documentation of the :mod:`gc` module for information on controlling the
64 collection of cyclic garbage.  Other implementations act differently and CPython
65 may change.)
67 Note that the use of the implementation's tracing or debugging facilities may
68 keep objects alive that would normally be collectable. Also note that catching
69 an exception with a ':keyword:`try`...\ :keyword:`except`' statement may keep
70 objects alive.
72 Some objects contain references to "external" resources such as open files or
73 windows.  It is understood that these resources are freed when the object is
74 garbage-collected, but since garbage collection is not guaranteed to happen,
75 such objects also provide an explicit way to release the external resource,
76 usually a :meth:`close` method. Programs are strongly recommended to explicitly
77 close such objects.  The ':keyword:`try`...\ :keyword:`finally`' statement
78 provides a convenient way to do this.
80 .. index:: single: container
82 Some objects contain references to other objects; these are called *containers*.
83 Examples of containers are tuples, lists and dictionaries.  The references are
84 part of a container's value.  In most cases, when we talk about the value of a
85 container, we imply the values, not the identities of the contained objects;
86 however, when we talk about the mutability of a container, only the identities
87 of the immediately contained objects are implied.  So, if an immutable container
88 (like a tuple) contains a reference to a mutable object, its value changes if
89 that mutable object is changed.
91 Types affect almost all aspects of object behavior.  Even the importance of
92 object identity is affected in some sense: for immutable types, operations that
93 compute new values may actually return a reference to any existing object with
94 the same type and value, while for mutable objects this is not allowed.  E.g.,
95 after ``a = 1; b = 1``, ``a`` and ``b`` may or may not refer to the same object
96 with the value one, depending on the implementation, but after ``c = []; d =
97 []``, ``c`` and ``d`` are guaranteed to refer to two different, unique, newly
98 created empty lists. (Note that ``c = d = []`` assigns the same object to both
99 ``c`` and ``d``.)
102 .. _types:
104 The standard type hierarchy
105 ===========================
107 .. index::
108    single: type
109    pair: data; type
110    pair: type; hierarchy
111    pair: extension; module
112    pair: C; language
114 Below is a list of the types that are built into Python.  Extension modules
115 (written in C, Java, or other languages, depending on the implementation) can
116 define additional types.  Future versions of Python may add types to the type
117 hierarchy (e.g., rational numbers, efficiently stored arrays of integers, etc.).
119 .. index::
120    single: attribute
121    pair: special; attribute
122    triple: generic; special; attribute
124 Some of the type descriptions below contain a paragraph listing 'special
125 attributes.'  These are attributes that provide access to the implementation and
126 are not intended for general use.  Their definition may change in the future.
128 None
129    .. index:: object: None
131    This type has a single value.  There is a single object with this value. This
132    object is accessed through the built-in name ``None``. It is used to signify the
133    absence of a value in many situations, e.g., it is returned from functions that
134    don't explicitly return anything. Its truth value is false.
136 NotImplemented
137    .. index:: object: NotImplemented
139    This type has a single value.  There is a single object with this value. This
140    object is accessed through the built-in name ``NotImplemented``. Numeric methods
141    and rich comparison methods may return this value if they do not implement the
142    operation for the operands provided.  (The interpreter will then try the
143    reflected operation, or some other fallback, depending on the operator.)  Its
144    truth value is true.
146 Ellipsis
147    .. index:: object: Ellipsis
149    This type has a single value.  There is a single object with this value. This
150    object is accessed through the built-in name ``Ellipsis``. It is used to
151    indicate the presence of the ``...`` syntax in a slice.  Its truth value is
152    true.
154 :class:`numbers.Number`
155    .. index:: object: numeric
157    These are created by numeric literals and returned as results by arithmetic
158    operators and arithmetic built-in functions.  Numeric objects are immutable;
159    once created their value never changes.  Python numbers are of course strongly
160    related to mathematical numbers, but subject to the limitations of numerical
161    representation in computers.
163    Python distinguishes between integers, floating point numbers, and complex
164    numbers:
166    :class:`numbers.Integral`
167       .. index:: object: integer
169       These represent elements from the mathematical set of integers (positive and
170       negative).
172       There are three types of integers:
174       Plain integers
175          .. index::
176             object: plain integer
177             single: OverflowError (built-in exception)
179          These represent numbers in the range -2147483648 through 2147483647.
180          (The range may be larger on machines with a larger natural word size,
181          but not smaller.)  When the result of an operation would fall outside
182          this range, the result is normally returned as a long integer (in some
183          cases, the exception :exc:`OverflowError` is raised instead).  For the
184          purpose of shift and mask operations, integers are assumed to have a
185          binary, 2's complement notation using 32 or more bits, and hiding no
186          bits from the user (i.e., all 4294967296 different bit patterns
187          correspond to different values).
189       Long integers
190          .. index:: object: long integer
192          These represent numbers in an unlimited range, subject to available
193          (virtual) memory only.  For the purpose of shift and mask operations, a
194          binary representation is assumed, and negative numbers are represented
195          in a variant of 2's complement which gives the illusion of an infinite
196          string of sign bits extending to the left.
198       Booleans
199          .. index::
200             object: Boolean
201             single: False
202             single: True
204          These represent the truth values False and True.  The two objects
205          representing the values False and True are the only Boolean objects.
206          The Boolean type is a subtype of plain integers, and Boolean values
207          behave like the values 0 and 1, respectively, in almost all contexts,
208          the exception being that when converted to a string, the strings
209          ``"False"`` or ``"True"`` are returned, respectively.
211       .. index:: pair: integer; representation
213       The rules for integer representation are intended to give the most
214       meaningful interpretation of shift and mask operations involving negative
215       integers and the least surprises when switching between the plain and long
216       integer domains.  Any operation, if it yields a result in the plain
217       integer domain, will yield the same result in the long integer domain or
218       when using mixed operands.  The switch between domains is transparent to
219       the programmer.
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
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 is 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.
236    :class:`numbers.Complex`
237       .. index::
238          object: complex
239          pair: complex; number
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``.
246 Sequences
247    .. index::
248       builtin: len
249       object: sequence
250       single: index operation
251       single: item selection
252       single: subscription
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]``.
259    .. index:: single: slicing
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.
266    .. index:: single: extended slicing
268    Some sequences also support "extended slicing" with a third "step" parameter:
269    ``a[i:j:k]`` selects all items of *a* with index *x* where ``x = i + n*k``, *n*
270    ``>=`` ``0`` and *i* ``<=`` *x* ``<`` *j*.
272    Sequences are distinguished according to their mutability:
274    Immutable sequences
275       .. index::
276          object: immutable sequence
277          object: immutable
279       An object of an immutable sequence type cannot change once it is created.  (If
280       the object contains references to other objects, these other objects may be
281       mutable and may be changed; however, the collection of objects directly
282       referenced by an immutable object cannot change.)
284       The following types are immutable sequences:
286       Strings
287          .. index::
288             builtin: chr
289             builtin: ord
290             object: string
291             single: character
292             single: byte
293             single: ASCII@ASCII
295          The items of a string are characters.  There is no separate character type; a
296          character is represented by a string of one item. Characters represent (at
297          least) 8-bit bytes.  The built-in functions :func:`chr` and :func:`ord` convert
298          between characters and nonnegative integers representing the byte values.  Bytes
299          with the values 0-127 usually represent the corresponding ASCII values, but the
300          interpretation of values is up to the program.  The string data type is also
301          used to represent arrays of bytes, e.g., to hold data read from a file.
303          .. index::
304             single: ASCII@ASCII
305             single: EBCDIC
306             single: character set
307             pair: string; comparison
308             builtin: chr
309             builtin: ord
311          (On systems whose native character set is not ASCII, strings may use EBCDIC in
312          their internal representation, provided the functions :func:`chr` and
313          :func:`ord` implement a mapping between ASCII and EBCDIC, and string comparison
314          preserves the ASCII order. Or perhaps someone can propose a better rule?)
316       Unicode
317          .. index::
318             builtin: unichr
319             builtin: ord
320             builtin: unicode
321             object: unicode
322             single: character
323             single: integer
324             single: Unicode
326          The items of a Unicode object are Unicode code units.  A Unicode code unit is
327          represented by a Unicode object of one item and can hold either a 16-bit or
328          32-bit value representing a Unicode ordinal (the maximum value for the ordinal
329          is given in ``sys.maxunicode``, and depends on how Python is configured at
330          compile time).  Surrogate pairs may be present in the Unicode object, and will
331          be reported as two separate items.  The built-in functions :func:`unichr` and
332          :func:`ord` convert between code units and nonnegative integers representing the
333          Unicode ordinals as defined in the Unicode Standard 3.0. Conversion from and to
334          other encodings are possible through the Unicode method :meth:`encode` and the
335          built-in function :func:`unicode`.
337       Tuples
338          .. index::
339             object: tuple
340             pair: singleton; tuple
341             pair: empty; tuple
343          The items of a tuple are arbitrary Python objects. Tuples of two or more items
344          are formed by comma-separated lists of expressions.  A tuple of one item (a
345          'singleton') can be formed by affixing a comma to an expression (an expression
346          by itself does not create a tuple, since parentheses must be usable for grouping
347          of expressions).  An empty tuple can be formed by an empty pair of parentheses.
349    Mutable sequences
350       .. index::
351          object: mutable sequence
352          object: mutable
353          pair: assignment; statement
354          single: delete
355          statement: del
356          single: subscription
357          single: slicing
359       Mutable sequences can be changed after they are created.  The subscription and
360       slicing notations can be used as the target of assignment and :keyword:`del`
361       (delete) statements.
363       There are currently two intrinsic mutable sequence types:
365       Lists
366          .. index:: object: list
368          The items of a list are arbitrary Python objects.  Lists are formed by placing a
369          comma-separated list of expressions in square brackets. (Note that there are no
370          special cases needed to form lists of length 0 or 1.)
372       Byte Arrays
373          .. index:: bytearray
375          A bytearray object is a mutable array. They are created by the built-in
376          :func:`bytearray` constructor.  Aside from being mutable (and hence
377          unhashable), byte arrays otherwise provide the same interface and
378          functionality as immutable bytes objects.
380       .. index:: module: array
382       The extension module :mod:`array` provides an additional example of a mutable
383       sequence type.
385 Set types
386    .. index::
387       builtin: len
388       object: set type
390    These represent unordered, finite sets of unique, immutable objects. As such,
391    they cannot be indexed by any subscript. However, they can be iterated over, and
392    the built-in function :func:`len` returns the number of items in a set. Common
393    uses for sets are fast membership testing, removing duplicates from a sequence,
394    and computing mathematical operations such as intersection, union, difference,
395    and symmetric difference.
397    For set elements, the same immutability rules apply as for dictionary keys. Note
398    that numeric types obey the normal rules for numeric comparison: if two numbers
399    compare equal (e.g., ``1`` and ``1.0``), only one of them can be contained in a
400    set.
402    There are currently two intrinsic set types:
404    Sets
405       .. index:: object: set
407       These represent a mutable set. They are created by the built-in :func:`set`
408       constructor and can be modified afterwards by several methods, such as
409       :meth:`add`.
411    Frozen sets
412       .. index:: object: frozenset
414       These represent an immutable set.  They are created by the built-in
415       :func:`frozenset` constructor.  As a frozenset is immutable and
416       :term:`hashable`, it can be used again as an element of another set, or as
417       a dictionary key.
419 Mappings
420    .. index::
421       builtin: len
422       single: subscription
423       object: mapping
425    These represent finite sets of objects indexed by arbitrary index sets. The
426    subscript notation ``a[k]`` selects the item indexed by ``k`` from the mapping
427    ``a``; this can be used in expressions and as the target of assignments or
428    :keyword:`del` statements. The built-in function :func:`len` returns the number
429    of items in a mapping.
431    There is currently a single intrinsic mapping type:
433    Dictionaries
434       .. index:: object: dictionary
436       These represent finite sets of objects indexed by nearly arbitrary values.  The
437       only types of values not acceptable as keys are values containing lists or
438       dictionaries or other mutable types that are compared by value rather than by
439       object identity, the reason being that the efficient implementation of
440       dictionaries requires a key's hash value to remain constant. Numeric types used
441       for keys obey the normal rules for numeric comparison: if two numbers compare
442       equal (e.g., ``1`` and ``1.0``) then they can be used interchangeably to index
443       the same dictionary entry.
445       Dictionaries are mutable; they can be created by the ``{...}`` notation (see
446       section :ref:`dict`).
448       .. index::
449          module: dbm
450          module: gdbm
451          module: bsddb
453       The extension modules :mod:`dbm`, :mod:`gdbm`, and :mod:`bsddb` provide
454       additional examples of mapping types.
456 Callable types
457    .. index::
458       object: callable
459       pair: function; call
460       single: invocation
461       pair: function; argument
463    These are the types to which the function call operation (see section
464    :ref:`calls`) can be applied:
466    User-defined functions
467       .. index::
468          pair: user-defined; function
469          object: function
470          object: user-defined function
472       A user-defined function object is created by a function definition (see
473       section :ref:`function`).  It should be called with an argument list
474       containing the same number of items as the function's formal parameter
475       list.
477       Special attributes:
479       +-----------------------+-------------------------------+-----------+
480       | Attribute             | Meaning                       |           |
481       +=======================+===============================+===========+
482       | :attr:`func_doc`      | The function's documentation  | Writable  |
483       |                       | string, or ``None`` if        |           |
484       |                       | unavailable                   |           |
485       +-----------------------+-------------------------------+-----------+
486       | :attr:`__doc__`       | Another way of spelling       | Writable  |
487       |                       | :attr:`func_doc`              |           |
488       +-----------------------+-------------------------------+-----------+
489       | :attr:`func_name`     | The function's name           | Writable  |
490       +-----------------------+-------------------------------+-----------+
491       | :attr:`__name__`      | Another way of spelling       | Writable  |
492       |                       | :attr:`func_name`             |           |
493       +-----------------------+-------------------------------+-----------+
494       | :attr:`__module__`    | The name of the module the    | Writable  |
495       |                       | function was defined in, or   |           |
496       |                       | ``None`` if unavailable.      |           |
497       +-----------------------+-------------------------------+-----------+
498       | :attr:`func_defaults` | A tuple containing default    | Writable  |
499       |                       | argument values for those     |           |
500       |                       | arguments that have defaults, |           |
501       |                       | or ``None`` if no arguments   |           |
502       |                       | have a default value          |           |
503       +-----------------------+-------------------------------+-----------+
504       | :attr:`func_code`     | The code object representing  | Writable  |
505       |                       | the compiled function body.   |           |
506       +-----------------------+-------------------------------+-----------+
507       | :attr:`func_globals`  | A reference to the dictionary | Read-only |
508       |                       | that holds the function's     |           |
509       |                       | global variables --- the      |           |
510       |                       | global namespace of the       |           |
511       |                       | module in which the function  |           |
512       |                       | was defined.                  |           |
513       +-----------------------+-------------------------------+-----------+
514       | :attr:`func_dict`     | The namespace supporting      | Writable  |
515       |                       | arbitrary function            |           |
516       |                       | attributes.                   |           |
517       +-----------------------+-------------------------------+-----------+
518       | :attr:`func_closure`  | ``None`` or a tuple of cells  | Read-only |
519       |                       | that contain bindings for the |           |
520       |                       | function's free variables.    |           |
521       +-----------------------+-------------------------------+-----------+
523       Most of the attributes labelled "Writable" check the type of the assigned value.
525       .. versionchanged:: 2.4
526          ``func_name`` is now writable.
528       Function objects also support getting and setting arbitrary attributes, which
529       can be used, for example, to attach metadata to functions.  Regular attribute
530       dot-notation is used to get and set such attributes. *Note that the current
531       implementation only supports function attributes on user-defined functions.
532       Function attributes on built-in functions may be supported in the future.*
534       Additional information about a function's definition can be retrieved from its
535       code object; see the description of internal types below.
537       .. index::
538          single: func_doc (function attribute)
539          single: __doc__ (function attribute)
540          single: __name__ (function attribute)
541          single: __module__ (function attribute)
542          single: __dict__ (function attribute)
543          single: func_defaults (function attribute)
544          single: func_closure (function attribute)
545          single: func_code (function attribute)
546          single: func_globals (function attribute)
547          single: func_dict (function attribute)
548          pair: global; namespace
550    User-defined methods
551       .. index::
552          object: method
553          object: user-defined method
554          pair: user-defined; method
556       A user-defined method object combines a class, a class instance (or ``None``)
557       and any callable object (normally a user-defined function).
559       Special read-only attributes: :attr:`im_self` is the class instance object,
560       :attr:`im_func` is the function object; :attr:`im_class` is the class of
561       :attr:`im_self` for bound methods or the class that asked for the method for
562       unbound methods; :attr:`__doc__` is the method's documentation (same as
563       ``im_func.__doc__``); :attr:`__name__` is the method name (same as
564       ``im_func.__name__``); :attr:`__module__` is the name of the module the method
565       was defined in, or ``None`` if unavailable.
567       .. versionchanged:: 2.2
568          :attr:`im_self` used to refer to the class that defined the method.
570       .. versionchanged:: 2.6
571          For 3.0 forward-compatibility, :attr:`im_func` is also available as
572          :attr:`__func__`, and :attr:`im_self` as :attr:`__self__`.
574       .. index::
575          single: __doc__ (method attribute)
576          single: __name__ (method attribute)
577          single: __module__ (method attribute)
578          single: im_func (method attribute)
579          single: im_self (method attribute)
581       Methods also support accessing (but not setting) the arbitrary function
582       attributes on the underlying function object.
584       User-defined method objects may be created when getting an attribute of a class
585       (perhaps via an instance of that class), if that attribute is a user-defined
586       function object, an unbound user-defined method object, or a class method
587       object. When the attribute is a user-defined method object, a new method object
588       is only created if the class from which it is being retrieved is the same as, or
589       a derived class of, the class stored in the original method object; otherwise,
590       the original method object is used as it is.
592       .. index::
593          single: im_class (method attribute)
594          single: im_func (method attribute)
595          single: im_self (method attribute)
597       When a user-defined method object is created by retrieving a user-defined
598       function object from a class, its :attr:`im_self` attribute is ``None``
599       and the method object is said to be unbound. When one is created by
600       retrieving a user-defined function object from a class via one of its
601       instances, its :attr:`im_self` attribute is the instance, and the method
602       object is said to be bound. In either case, the new method's
603       :attr:`im_class` attribute is the class from which the retrieval takes
604       place, and its :attr:`im_func` attribute is the original function object.
606       .. index:: single: im_func (method attribute)
608       When a user-defined method object is created by retrieving another method object
609       from a class or instance, the behaviour is the same as for a function object,
610       except that the :attr:`im_func` attribute of the new instance is not the
611       original method object but its :attr:`im_func` attribute.
613       .. index::
614          single: im_class (method attribute)
615          single: im_func (method attribute)
616          single: im_self (method attribute)
618       When a user-defined method object is created by retrieving a class method object
619       from a class or instance, its :attr:`im_self` attribute is the class itself (the
620       same as the :attr:`im_class` attribute), and its :attr:`im_func` attribute is
621       the function object underlying the class method.
623       When an unbound user-defined method object is called, the underlying function
624       (:attr:`im_func`) is called, with the restriction that the first argument must
625       be an instance of the proper class (:attr:`im_class`) or of a derived class
626       thereof.
628       When a bound user-defined method object is called, the underlying function
629       (:attr:`im_func`) is called, inserting the class instance (:attr:`im_self`) in
630       front of the argument list.  For instance, when :class:`C` is a class which
631       contains a definition for a function :meth:`f`, and ``x`` is an instance of
632       :class:`C`, calling ``x.f(1)`` is equivalent to calling ``C.f(x, 1)``.
634       When a user-defined method object is derived from a class method object, the
635       "class instance" stored in :attr:`im_self` will actually be the class itself, so
636       that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to calling ``f(C,1)``
637       where ``f`` is the underlying function.
639       Note that the transformation from function object to (unbound or bound) method
640       object happens each time the attribute is retrieved from the class or instance.
641       In some cases, a fruitful optimization is to assign the attribute to a local
642       variable and call that local variable. Also notice that this transformation only
643       happens for user-defined functions; other callable objects (and all non-callable
644       objects) are retrieved without transformation.  It is also important to note
645       that user-defined functions which are attributes of a class instance are not
646       converted to bound methods; this *only* happens when the function is an
647       attribute of the class.
649    Generator functions
650       .. index::
651          single: generator; function
652          single: generator; iterator
654       A function or method which uses the :keyword:`yield` statement (see section
655       :ref:`yield`) is called a :dfn:`generator
656       function`.  Such a function, when called, always returns an iterator object
657       which can be used to execute the body of the function:  calling the iterator's
658       :meth:`next` method will cause the function to execute until it provides a value
659       using the :keyword:`yield` statement.  When the function executes a
660       :keyword:`return` statement or falls off the end, a :exc:`StopIteration`
661       exception is raised and the iterator will have reached the end of the set of
662       values to be returned.
664    Built-in functions
665       .. index::
666          object: built-in function
667          object: function
668          pair: C; language
670       A built-in function object is a wrapper around a C function.  Examples of
671       built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a
672       standard built-in module). The number and type of the arguments are
673       determined by the C function. Special read-only attributes:
674       :attr:`__doc__` is the function's documentation string, or ``None`` if
675       unavailable; :attr:`__name__` is the function's name; :attr:`__self__` is
676       set to ``None`` (but see the next item); :attr:`__module__` is the name of
677       the module the function was defined in or ``None`` if unavailable.
679    Built-in methods
680       .. index::
681          object: built-in method
682          object: method
683          pair: built-in; method
685       This is really a different disguise of a built-in function, this time containing
686       an object passed to the C function as an implicit extra argument.  An example of
687       a built-in method is ``alist.append()``, assuming *alist* is a list object. In
688       this case, the special read-only attribute :attr:`__self__` is set to the object
689       denoted by *list*.
691    Class Types
692       Class types, or "new-style classes," are callable.  These objects normally act
693       as factories for new instances of themselves, but variations are possible for
694       class types that override :meth:`__new__`.  The arguments of the call are passed
695       to :meth:`__new__` and, in the typical case, to :meth:`__init__` to initialize
696       the new instance.
698    Classic Classes
699       .. index::
700          single: __init__() (object method)
701          object: class
702          object: class instance
703          object: instance
704          pair: class object; call
706       Class objects are described below.  When a class object is called, a new class
707       instance (also described below) is created and returned.  This implies a call to
708       the class's :meth:`__init__` method if it has one.  Any arguments are passed on
709       to the :meth:`__init__` method.  If there is no :meth:`__init__` method, the
710       class must be called without arguments.
712    Class instances
713       Class instances are described below.  Class instances are callable only when the
714       class has a :meth:`__call__` method; ``x(arguments)`` is a shorthand for
715       ``x.__call__(arguments)``.
717 Modules
718    .. index::
719       statement: import
720       object: module
722    Modules are imported by the :keyword:`import` statement (see section
723    :ref:`import`). A module object has a
724    namespace implemented by a dictionary object (this is the dictionary referenced
725    by the func_globals attribute of functions defined in the module).  Attribute
726    references are translated to lookups in this dictionary, e.g., ``m.x`` is
727    equivalent to ``m.__dict__["x"]``. A module object does not contain the code
728    object used to initialize the module (since it isn't needed once the
729    initialization is done).
731    Attribute assignment updates the module's namespace dictionary, e.g., ``m.x =
732    1`` is equivalent to ``m.__dict__["x"] = 1``.
734    .. index:: single: __dict__ (module attribute)
736    Special read-only attribute: :attr:`__dict__` is the module's namespace as a
737    dictionary object.
739    .. index::
740       single: __name__ (module attribute)
741       single: __doc__ (module attribute)
742       single: __file__ (module attribute)
743       pair: module; namespace
745    Predefined (writable) attributes: :attr:`__name__` is the module's name;
746    :attr:`__doc__` is the module's documentation string, or ``None`` if
747    unavailable; :attr:`__file__` is the pathname of the file from which the module
748    was loaded, if it was loaded from a file. The :attr:`__file__` attribute is not
749    present for C modules that are statically linked into the interpreter; for
750    extension modules loaded dynamically from a shared library, it is the pathname
751    of the shared library file.
753 Classes
754    Both class types (new-style classes) and class objects (old-style/classic
755    classes) are typically created by class definitions (see section
756    :ref:`class`).  A class has a namespace implemented by a dictionary object.
757    Class attribute references are translated to lookups in this dictionary, e.g.,
758    ``C.x`` is translated to ``C.__dict__["x"]`` (although for new-style classes
759    in particular there are a number of hooks which allow for other means of
760    locating attributes). When the attribute name is not found there, the
761    attribute search continues in the base classes.  For old-style classes, the
762    search is depth-first, left-to-right in the order of occurrence in the base
763    class list. New-style classes use the more complex C3 method resolution
764    order which behaves correctly even in the presence of 'diamond'
765    inheritance structures where there are multiple inheritance paths
766    leading back to a common ancestor. Additional details on the C3 MRO used by
767    new-style classes can be found in the documentation accompanying the
768    2.3 release at http://www.python.org/download/releases/2.3/mro/.
770    .. XXX: Could we add that MRO doc as an appendix to the language ref?
772    .. index::
773       object: class
774       object: class instance
775       object: instance
776       pair: class object; call
777       single: container
778       object: dictionary
779       pair: class; attribute
781    When a class attribute reference (for class :class:`C`, say) would yield a
782    user-defined function object or an unbound user-defined method object whose
783    associated class is either :class:`C` or one of its base classes, it is
784    transformed into an unbound user-defined method object whose :attr:`im_class`
785    attribute is :class:`C`. When it would yield a class method object, it is
786    transformed into a bound user-defined method object whose :attr:`im_class`
787    and :attr:`im_self` attributes are both :class:`C`.  When it would yield a
788    static method object, it is transformed into the object wrapped by the static
789    method object. See section :ref:`descriptors` for another way in which
790    attributes retrieved from a class may differ from those actually contained in
791    its :attr:`__dict__` (note that only new-style classes support descriptors).
793    .. index:: triple: class; attribute; assignment
795    Class attribute assignments update the class's dictionary, never the dictionary
796    of a base class.
798    .. index:: pair: class object; call
800    A class object can be called (see above) to yield a class instance (see below).
802    .. index::
803       single: __name__ (class attribute)
804       single: __module__ (class attribute)
805       single: __dict__ (class attribute)
806       single: __bases__ (class attribute)
807       single: __doc__ (class attribute)
809    Special attributes: :attr:`__name__` is the class name; :attr:`__module__` is
810    the module name in which the class was defined; :attr:`__dict__` is the
811    dictionary containing the class's namespace; :attr:`__bases__` is a tuple
812    (possibly empty or a singleton) containing the base classes, in the order of
813    their occurrence in the base class list; :attr:`__doc__` is the class's
814    documentation string, or None if undefined.
816 Class instances
817    .. index::
818       object: class instance
819       object: instance
820       pair: class; instance
821       pair: class instance; attribute
823    A class instance is created by calling a class object (see above). A class
824    instance has a namespace implemented as a dictionary which is the first place in
825    which attribute references are searched.  When an attribute is not found there,
826    and the instance's class has an attribute by that name, the search continues
827    with the class attributes.  If a class attribute is found that is a user-defined
828    function object or an unbound user-defined method object whose associated class
829    is the class (call it :class:`C`) of the instance for which the attribute
830    reference was initiated or one of its bases, it is transformed into a bound
831    user-defined method object whose :attr:`im_class` attribute is :class:`C` and
832    whose :attr:`im_self` attribute is the instance. Static method and class method
833    objects are also transformed, as if they had been retrieved from class
834    :class:`C`; see above under "Classes". See section :ref:`descriptors` for
835    another way in which attributes of a class retrieved via its instances may
836    differ from the objects actually stored in the class's :attr:`__dict__`. If no
837    class attribute is found, and the object's class has a :meth:`__getattr__`
838    method, that is called to satisfy the lookup.
840    .. index:: triple: class instance; attribute; assignment
842    Attribute assignments and deletions update the instance's dictionary, never a
843    class's dictionary.  If the class has a :meth:`__setattr__` or
844    :meth:`__delattr__` method, this is called instead of updating the instance
845    dictionary directly.
847    .. index::
848       object: numeric
849       object: sequence
850       object: mapping
852    Class instances can pretend to be numbers, sequences, or mappings if they have
853    methods with certain special names.  See section :ref:`specialnames`.
855    .. index::
856       single: __dict__ (instance attribute)
857       single: __class__ (instance attribute)
859    Special attributes: :attr:`__dict__` is the attribute dictionary;
860    :attr:`__class__` is the instance's class.
862 Files
863    .. index::
864       object: file
865       builtin: open
866       single: popen() (in module os)
867       single: makefile() (socket method)
868       single: sys.stdin
869       single: sys.stdout
870       single: sys.stderr
871       single: stdio
872       single: stdin (in module sys)
873       single: stdout (in module sys)
874       single: stderr (in module sys)
876    A file object represents an open file.  File objects are created by the
877    :func:`open` built-in function, and also by :func:`os.popen`,
878    :func:`os.fdopen`, and the :meth:`makefile` method of socket objects (and
879    perhaps by other functions or methods provided by extension modules).  The
880    objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are initialized to
881    file objects corresponding to the interpreter's standard input, output and
882    error streams.  See :ref:`bltin-file-objects` for complete documentation of
883    file objects.
885 Internal types
886    .. index::
887       single: internal type
888       single: types, internal
890    A few types used internally by the interpreter are exposed to the user. Their
891    definitions may change with future versions of the interpreter, but they are
892    mentioned here for completeness.
894    Code objects
895       .. index::
896          single: bytecode
897          object: code
899       Code objects represent *byte-compiled* executable Python code, or :term:`bytecode`.
900       The difference between a code object and a function object is that the function
901       object contains an explicit reference to the function's globals (the module in
902       which it was defined), while a code object contains no context; also the default
903       argument values are stored in the function object, not in the code object
904       (because they represent values calculated at run-time).  Unlike function
905       objects, code objects are immutable and contain no references (directly or
906       indirectly) to mutable objects.
908       Special read-only attributes: :attr:`co_name` gives the function name;
909       :attr:`co_argcount` is the number of positional arguments (including arguments
910       with default values); :attr:`co_nlocals` is the number of local variables used
911       by the function (including arguments); :attr:`co_varnames` is a tuple containing
912       the names of the local variables (starting with the argument names);
913       :attr:`co_cellvars` is a tuple containing the names of local variables that are
914       referenced by nested functions; :attr:`co_freevars` is a tuple containing the
915       names of free variables; :attr:`co_code` is a string representing the sequence
916       of bytecode instructions; :attr:`co_consts` is a tuple containing the literals
917       used by the bytecode; :attr:`co_names` is a tuple containing the names used by
918       the bytecode; :attr:`co_filename` is the filename from which the code was
919       compiled; :attr:`co_firstlineno` is the first line number of the function;
920       :attr:`co_lnotab` is a string encoding the mapping from bytecode offsets to
921       line numbers (for details see the source code of the interpreter);
922       :attr:`co_stacksize` is the required stack size (including local variables);
923       :attr:`co_flags` is an integer encoding a number of flags for the interpreter.
925       .. index::
926          single: co_argcount (code object attribute)
927          single: co_code (code object attribute)
928          single: co_consts (code object attribute)
929          single: co_filename (code object attribute)
930          single: co_firstlineno (code object attribute)
931          single: co_flags (code object attribute)
932          single: co_lnotab (code object attribute)
933          single: co_name (code object attribute)
934          single: co_names (code object attribute)
935          single: co_nlocals (code object attribute)
936          single: co_stacksize (code object attribute)
937          single: co_varnames (code object attribute)
938          single: co_cellvars (code object attribute)
939          single: co_freevars (code object attribute)
941       .. index:: object: generator
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.
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.
955       Other bits in :attr:`co_flags` are reserved for internal use.
957       .. index:: single: documentation string
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.
962    Frame objects
963       .. index:: object: frame
965       Frame objects represent execution frames.  They may occur in traceback objects
966       (see below).
968       .. index::
969          single: f_back (frame attribute)
970          single: f_code (frame attribute)
971          single: f_globals (frame attribute)
972          single: f_locals (frame attribute)
973          single: f_lasti (frame attribute)
974          single: f_builtins (frame attribute)
975          single: f_restricted (frame attribute)
977       Special read-only attributes: :attr:`f_back` is to the previous stack frame
978       (towards the caller), or ``None`` if this is the bottom stack frame;
979       :attr:`f_code` is the code object being executed in this frame; :attr:`f_locals`
980       is the dictionary used to look up local variables; :attr:`f_globals` is used for
981       global variables; :attr:`f_builtins` is used for built-in (intrinsic) names;
982       :attr:`f_restricted` is a flag indicating whether the function is executing in
983       restricted execution mode; :attr:`f_lasti` gives the precise instruction (this
984       is an index into the bytecode string of the code object).
986       .. index::
987          single: f_trace (frame attribute)
988          single: f_exc_type (frame attribute)
989          single: f_exc_value (frame attribute)
990          single: f_exc_traceback (frame attribute)
991          single: f_lineno (frame attribute)
993       Special writable attributes: :attr:`f_trace`, if not ``None``, is a function
994       called at the start of each source code line (this is used by the debugger);
995       :attr:`f_exc_type`, :attr:`f_exc_value`, :attr:`f_exc_traceback` represent the
996       last exception raised in the parent frame provided another exception was ever
997       raised in the current frame (in all other cases they are None); :attr:`f_lineno`
998       is the current line number of the frame --- writing to this from within a trace
999       function jumps to the given line (only for the bottom-most frame).  A debugger
1000       can implement a Jump command (aka Set Next Statement) by writing to f_lineno.
1002    Traceback objects
1003       .. index::
1004          object: traceback
1005          pair: stack; trace
1006          pair: exception; handler
1007          pair: execution; stack
1008          single: exc_info (in module sys)
1009          single: exc_traceback (in module sys)
1010          single: last_traceback (in module sys)
1011          single: sys.exc_info
1012          single: sys.exc_traceback
1013          single: sys.last_traceback
1015       Traceback objects represent a stack trace of an exception.  A traceback object
1016       is created when an exception occurs.  When the search for an exception handler
1017       unwinds the execution stack, at each unwound level a traceback object is
1018       inserted in front of the current traceback.  When an exception handler is
1019       entered, the stack trace is made available to the program. (See section
1020       :ref:`try`.) It is accessible as ``sys.exc_traceback``,
1021       and also as the third item of the tuple returned by ``sys.exc_info()``.  The
1022       latter is the preferred interface, since it works correctly when the program is
1023       using multiple threads. When the program contains no suitable handler, the stack
1024       trace is written (nicely formatted) to the standard error stream; if the
1025       interpreter is interactive, it is also made available to the user as
1026       ``sys.last_traceback``.
1028       .. index::
1029          single: tb_next (traceback attribute)
1030          single: tb_frame (traceback attribute)
1031          single: tb_lineno (traceback attribute)
1032          single: tb_lasti (traceback attribute)
1033          statement: try
1035       Special read-only attributes: :attr:`tb_next` is the next level in the stack
1036       trace (towards the frame where the exception occurred), or ``None`` if there is
1037       no next level; :attr:`tb_frame` points to the execution frame of the current
1038       level; :attr:`tb_lineno` gives the line number where the exception occurred;
1039       :attr:`tb_lasti` indicates the precise instruction.  The line number and last
1040       instruction in the traceback may differ from the line number of its frame object
1041       if the exception occurred in a :keyword:`try` statement with no matching except
1042       clause or with a finally clause.
1044    Slice objects
1045       .. index:: builtin: slice
1047       Slice objects are used to represent slices when *extended slice syntax* is used.
1048       This is a slice using two colons, or multiple slices or ellipses separated by
1049       commas, e.g., ``a[i:j:step]``, ``a[i:j, k:l]``, or ``a[..., i:j]``.  They are
1050       also created by the built-in :func:`slice` function.
1052       .. index::
1053          single: start (slice object attribute)
1054          single: stop (slice object attribute)
1055          single: step (slice object attribute)
1057       Special read-only attributes: :attr:`start` is the lower bound; :attr:`stop` is
1058       the upper bound; :attr:`step` is the step value; each is ``None`` if omitted.
1059       These attributes can have any type.
1061       Slice objects support one method:
1064       .. method:: slice.indices(self, length)
1066          This method takes a single integer argument *length* and computes information
1067          about the extended slice that the slice object would describe if applied to a
1068          sequence of *length* items.  It returns a tuple of three integers; respectively
1069          these are the *start* and *stop* indices and the *step* or stride length of the
1070          slice. Missing or out-of-bounds indices are handled in a manner consistent with
1071          regular slices.
1073          .. versionadded:: 2.3
1075    Static method objects
1076       Static method objects provide a way of defeating the transformation of function
1077       objects to method objects described above. A static method object is a wrapper
1078       around any other object, usually a user-defined method object. When a static
1079       method object is retrieved from a class or a class instance, the object actually
1080       returned is the wrapped object, which is not subject to any further
1081       transformation. Static method objects are not themselves callable, although the
1082       objects they wrap usually are. Static method objects are created by the built-in
1083       :func:`staticmethod` constructor.
1085    Class method objects
1086       A class method object, like a static method object, is a wrapper around another
1087       object that alters the way in which that object is retrieved from classes and
1088       class instances. The behaviour of class method objects upon such retrieval is
1089       described above, under "User-defined methods". Class method objects are created
1090       by the built-in :func:`classmethod` constructor.
1093 .. _newstyle:
1095 New-style and classic classes
1096 =============================
1098 Classes and instances come in two flavors: old-style (or classic) and new-style.
1100 Up to Python 2.1, old-style classes were the only flavour available to the user.
1101 The concept of (old-style) class is unrelated to the concept of type: if *x* is
1102 an instance of an old-style class, then ``x.__class__`` designates the class of
1103 *x*, but ``type(x)`` is always ``<type 'instance'>``.  This reflects the fact
1104 that all old-style instances, independently of their class, are implemented with
1105 a single built-in type, called ``instance``.
1107 New-style classes were introduced in Python 2.2 to unify classes and types.  A
1108 new-style class is neither more nor less than a user-defined type.  If *x* is an
1109 instance of a new-style class, then ``type(x)`` is typically the same as
1110 ``x.__class__`` (although this is not guaranteed - a new-style class instance is
1111 permitted to override the value returned for ``x.__class__``).
1113 The major motivation for introducing new-style classes is to provide a unified
1114 object model with a full meta-model.  It also has a number of practical
1115 benefits, like the ability to subclass most built-in types, or the introduction
1116 of "descriptors", which enable computed properties.
1118 For compatibility reasons, classes are still old-style by default.  New-style
1119 classes are created by specifying another new-style class (i.e. a type) as a
1120 parent class, or the "top-level type" :class:`object` if no other parent is
1121 needed.  The behaviour of new-style classes differs from that of old-style
1122 classes in a number of important details in addition to what :func:`type`
1123 returns.  Some of these changes are fundamental to the new object model, like
1124 the way special methods are invoked.  Others are "fixes" that could not be
1125 implemented before for compatibility concerns, like the method resolution order
1126 in case of multiple inheritance.
1128 While this manual aims to provide comprehensive coverage of Python's class
1129 mechanics, it may still be lacking in some areas when it comes to its coverage
1130 of new-style classes. Please see http://www.python.org/doc/newstyle/ for
1131 sources of additional information.
1133 .. index::
1134    single: class; new-style
1135    single: class; classic
1136    single: class; old-style
1138 Old-style classes are removed in Python 3.0, leaving only the semantics of
1139 new-style classes.
1142 .. _specialnames:
1144 Special method names
1145 ====================
1147 .. index::
1148    pair: operator; overloading
1149    single: __getitem__() (mapping object method)
1151 A class can implement certain operations that are invoked by special syntax
1152 (such as arithmetic operations or subscripting and slicing) by defining methods
1153 with special names. This is Python's approach to :dfn:`operator overloading`,
1154 allowing classes to define their own behavior with respect to language
1155 operators.  For instance, if a class defines a method named :meth:`__getitem__`,
1156 and ``x`` is an instance of this class, then ``x[i]`` is roughly equivalent
1157 to ``x.__getitem__(i)`` for old-style classes and ``type(x).__getitem__(x, i)``
1158 for new-style classes.  Except where mentioned, attempts to execute an
1159 operation raise an exception when no appropriate method is defined (typically
1160 :exc:`AttributeError` or :exc:`TypeError`).
1162 When implementing a class that emulates any built-in type, it is important that
1163 the emulation only be implemented to the degree that it makes sense for the
1164 object being modelled.  For example, some sequences may work well with retrieval
1165 of individual elements, but extracting a slice may not make sense.  (One example
1166 of this is the :class:`NodeList` interface in the W3C's Document Object Model.)
1169 .. _customization:
1171 Basic customization
1172 -------------------
1174 .. method:: object.__new__(cls[, ...])
1176    .. index:: pair: subclassing; immutable types
1178    Called to create a new instance of class *cls*.  :meth:`__new__` is a static
1179    method (special-cased so you need not declare it as such) that takes the class
1180    of which an instance was requested as its first argument.  The remaining
1181    arguments are those passed to the object constructor expression (the call to the
1182    class).  The return value of :meth:`__new__` should be the new object instance
1183    (usually an instance of *cls*).
1185    Typical implementations create a new instance of the class by invoking the
1186    superclass's :meth:`__new__` method using ``super(currentclass,
1187    cls).__new__(cls[, ...])`` with appropriate arguments and then modifying the
1188    newly-created instance as necessary before returning it.
1190    If :meth:`__new__` returns an instance of *cls*, then the new instance's
1191    :meth:`__init__` method will be invoked like ``__init__(self[, ...])``, where
1192    *self* is the new instance and the remaining arguments are the same as were
1193    passed to :meth:`__new__`.
1195    If :meth:`__new__` does not return an instance of *cls*, then the new instance's
1196    :meth:`__init__` method will not be invoked.
1198    :meth:`__new__` is intended mainly to allow subclasses of immutable types (like
1199    int, str, or tuple) to customize instance creation.  It is also commonly
1200    overridden in custom metaclasses in order to customize class creation.
1203 .. method:: object.__init__(self[, ...])
1205    .. index:: pair: class; constructor
1207    Called when the instance is created.  The arguments are those passed to the
1208    class constructor expression.  If a base class has an :meth:`__init__` method,
1209    the derived class's :meth:`__init__` method, if any, must explicitly call it to
1210    ensure proper initialization of the base class part of the instance; for
1211    example: ``BaseClass.__init__(self, [args...])``.  As a special constraint on
1212    constructors, no value may be returned; doing so will cause a :exc:`TypeError`
1213    to be raised at runtime.
1216 .. method:: object.__del__(self)
1218    .. index::
1219       single: destructor
1220       statement: del
1222    Called when the instance is about to be destroyed.  This is also called a
1223    destructor.  If a base class has a :meth:`__del__` method, the derived class's
1224    :meth:`__del__` method, if any, must explicitly call it to ensure proper
1225    deletion of the base class part of the instance.  Note that it is possible
1226    (though not recommended!) for the :meth:`__del__` method to postpone destruction
1227    of the instance by creating a new reference to it.  It may then be called at a
1228    later time when this new reference is deleted.  It is not guaranteed that
1229    :meth:`__del__` methods are called for objects that still exist when the
1230    interpreter exits.
1232    .. note::
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.  Some common situations that may
1237       prevent the reference count of an object from going to zero include:
1238       circular references between objects (e.g., a doubly-linked list or a tree
1239       data structure with parent and child pointers); a reference to the object
1240       on the stack frame of a function that caught an exception (the traceback
1241       stored in ``sys.exc_traceback`` keeps the stack frame alive); or a
1242       reference to the object on the stack frame that raised an unhandled
1243       exception in interactive mode (the traceback stored in
1244       ``sys.last_traceback`` keeps the stack frame alive).  The first situation
1245       can only be remedied by explicitly breaking the cycles; the latter two
1246       situations can be resolved by storing ``None`` in ``sys.exc_traceback`` or
1247       ``sys.last_traceback``.  Circular references which are garbage are
1248       detected when the option cycle detector is enabled (it's on by default),
1249       but can only be cleaned up if there are no Python-level :meth:`__del__`
1250       methods involved. Refer to the documentation for the :mod:`gc` module for
1251       more information about how :meth:`__del__` methods are handled by the
1252       cycle detector, particularly the description of the ``garbage`` value.
1254    .. warning::
1256       Due to the precarious circumstances under which :meth:`__del__` methods are
1257       invoked, exceptions that occur during their execution are ignored, and a warning
1258       is printed to ``sys.stderr`` instead.  Also, when :meth:`__del__` is invoked in
1259       response to a module being deleted (e.g., when execution of the program is
1260       done), other globals referenced by the :meth:`__del__` method may already have
1261       been deleted or in the process of being torn down (e.g. the import
1262       machinery shutting down).  For this reason, :meth:`__del__` methods
1263       should do the absolute
1264       minimum needed to maintain external invariants.  Starting with version 1.5,
1265       Python guarantees that globals whose name begins with a single underscore are
1266       deleted from their module before other globals are deleted; if no other
1267       references to such globals exist, this may help in assuring that imported
1268       modules are still available at the time when the :meth:`__del__` method is
1269       called.
1272 .. method:: object.__repr__(self)
1274    .. index:: builtin: repr
1276    Called by the :func:`repr` built-in function and by string conversions (reverse
1277    quotes) to compute the "official" string representation of an object.  If at all
1278    possible, this should look like a valid Python expression that could be used to
1279    recreate an object with the same value (given an appropriate environment).  If
1280    this is not possible, a string of the form ``<...some useful description...>``
1281    should be returned.  The return value must be a string object. If a class
1282    defines :meth:`__repr__` but not :meth:`__str__`, then :meth:`__repr__` is also
1283    used when an "informal" string representation of instances of that class is
1284    required.
1286    .. index::
1287       pair: string; conversion
1288       pair: reverse; quotes
1289       pair: backward; quotes
1290       single: back-quotes
1292    This is typically used for debugging, so it is important that the representation
1293    is information-rich and unambiguous.
1296 .. method:: object.__str__(self)
1298    .. index::
1299       builtin: str
1300       statement: print
1302    Called by the :func:`str` built-in function and by the :keyword:`print`
1303    statement to compute the "informal" string representation of an object.  This
1304    differs from :meth:`__repr__` in that it does not have to be a valid Python
1305    expression: a more convenient or concise representation may be used instead.
1306    The return value must be a string object.
1309 .. method:: object.__lt__(self, other)
1310             object.__le__(self, other)
1311             object.__eq__(self, other)
1312             object.__ne__(self, other)
1313             object.__gt__(self, other)
1314             object.__ge__(self, other)
1316    .. versionadded:: 2.1
1318    .. index::
1319       single: comparisons
1321    These are the so-called "rich comparison" methods, and are called for comparison
1322    operators in preference to :meth:`__cmp__` below. The correspondence between
1323    operator symbols and method names is as follows: ``x<y`` calls ``x.__lt__(y)``,
1324    ``x<=y`` calls ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` and
1325    ``x<>y`` call ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` calls
1326    ``x.__ge__(y)``.
1328    A rich comparison method may return the singleton ``NotImplemented`` if it does
1329    not implement the operation for a given pair of arguments. By convention,
1330    ``False`` and ``True`` are returned for a successful comparison. However, these
1331    methods can return any value, so if the comparison operator is used in a Boolean
1332    context (e.g., in the condition of an ``if`` statement), Python will call
1333    :func:`bool` on the value to determine if the result is true or false.
1335    There are no implied relationships among the comparison operators. The truth
1336    of ``x==y`` does not imply that ``x!=y`` is false.  Accordingly, when
1337    defining :meth:`__eq__`, one should also define :meth:`__ne__` so that the
1338    operators will behave as expected.  See the paragraph on :meth:`__hash__` for
1339    some important notes on creating :term:`hashable` objects which support
1340    custom comparison operations and are usable as dictionary keys.
1342    There are no swapped-argument versions of these methods (to be used when the
1343    left argument does not support the operation but the right argument does);
1344    rather, :meth:`__lt__` and :meth:`__gt__` are each other's reflection,
1345    :meth:`__le__` and :meth:`__ge__` are each other's reflection, and
1346    :meth:`__eq__` and :meth:`__ne__` are their own reflection.
1348    Arguments to rich comparison methods are never coerced.
1350    To automatically generate ordering operations from a single root operation,
1351    see the `Total Ordering recipe in the ASPN cookbook
1352    <http://code.activestate.com/recipes/576529/>`_\.
1354 .. method:: object.__cmp__(self, other)
1356    .. index::
1357       builtin: cmp
1358       single: comparisons
1360    Called by comparison operations if rich comparison (see above) is not
1361    defined.  Should return a negative integer if ``self < other``, zero if
1362    ``self == other``, a positive integer if ``self > other``.  If no
1363    :meth:`__cmp__`, :meth:`__eq__` or :meth:`__ne__` operation is defined, class
1364    instances are compared by object identity ("address").  See also the
1365    description of :meth:`__hash__` for some important notes on creating
1366    :term:`hashable` objects which support custom comparison operations and are
1367    usable as dictionary keys. (Note: the restriction that exceptions are not
1368    propagated by :meth:`__cmp__` has been removed since Python 1.5.)
1371 .. method:: object.__rcmp__(self, other)
1373    .. versionchanged:: 2.1
1374       No longer supported.
1377 .. method:: object.__hash__(self)
1379    .. index::
1380       object: dictionary
1381       builtin: hash
1383    Called by built-in function :func:`hash` and for operations on members of
1384    hashed collections including :class:`set`, :class:`frozenset`, and
1385    :class:`dict`.  :meth:`__hash__` should return an integer.  The only required
1386    property is that objects which compare equal have the same hash value; it is
1387    advised to somehow mix together (e.g. using exclusive or) the hash values for
1388    the components of the object that also play a part in comparison of objects.
1390    If a class does not define a :meth:`__cmp__` or :meth:`__eq__` method it
1391    should not define a :meth:`__hash__` operation either; if it defines
1392    :meth:`__cmp__` or :meth:`__eq__` but not :meth:`__hash__`, its instances
1393    will not be usable in hashed collections.  If a class defines mutable objects
1394    and implements a :meth:`__cmp__` or :meth:`__eq__` method, it should not
1395    implement :meth:`__hash__`, since hashable collection implementations require
1396    that a object's hash value is immutable (if the object's hash value changes,
1397    it will be in the wrong hash bucket).
1399    User-defined classes have :meth:`__cmp__` and :meth:`__hash__` methods
1400    by default; with them, all objects compare unequal (except with themselves)
1401    and ``x.__hash__()`` returns ``id(x)``.
1403    Classes which inherit a :meth:`__hash__` method from a parent class but
1404    change the meaning of :meth:`__cmp__` or :meth:`__eq__` such that the hash
1405    value returned is no longer appropriate (e.g. by switching to a value-based
1406    concept of equality instead of the default identity based equality) can
1407    explicitly flag themselves as being unhashable by setting ``__hash__ = None``
1408    in the class definition. Doing so means that not only will instances of the
1409    class raise an appropriate :exc:`TypeError` when a program attempts to
1410    retrieve their hash value, but they will also be correctly identified as
1411    unhashable when checking ``isinstance(obj, collections.Hashable)`` (unlike
1412    classes which define their own :meth:`__hash__` to explicitly raise
1413    :exc:`TypeError`).
1415    .. versionchanged:: 2.5
1416       :meth:`__hash__` may now also return a long integer object; the 32-bit
1417       integer is then derived from the hash of that object.
1419    .. versionchanged:: 2.6
1420       :attr:`__hash__` may now be set to :const:`None` to explicitly flag
1421       instances of a class as unhashable.
1424 .. method:: object.__nonzero__(self)
1426    .. index:: single: __len__() (mapping object method)
1428    Called to implement truth value testing and the built-in operation ``bool()``;
1429    should return ``False`` or ``True``, or their integer equivalents ``0`` or
1430    ``1``.  When this method is not defined, :meth:`__len__` is called, if it is
1431    defined, and the object is considered true if its result is nonzero.
1432    If a class defines neither :meth:`__len__` nor :meth:`__nonzero__`, all its
1433    instances are considered true.
1436 .. method:: object.__unicode__(self)
1438    .. index:: builtin: unicode
1440    Called to implement :func:`unicode` builtin; should return a Unicode object.
1441    When this method is not defined, string conversion is attempted, and the result
1442    of string conversion is converted to Unicode using the system default encoding.
1445 .. _attribute-access:
1447 Customizing attribute access
1448 ----------------------------
1450 The following methods can be defined to customize the meaning of attribute
1451 access (use of, assignment to, or deletion of ``x.name``) for class instances.
1454 .. method:: object.__getattr__(self, name)
1456    Called when an attribute lookup has not found the attribute in the usual places
1457    (i.e. it is not an instance attribute nor is it found in the class tree for
1458    ``self``).  ``name`` is the attribute name. This method should return the
1459    (computed) attribute value or raise an :exc:`AttributeError` exception.
1461    .. index:: single: __setattr__() (object method)
1463    Note that if the attribute is found through the normal mechanism,
1464    :meth:`__getattr__` is not called.  (This is an intentional asymmetry between
1465    :meth:`__getattr__` and :meth:`__setattr__`.) This is done both for efficiency
1466    reasons and because otherwise :meth:`__getattr__` would have no way to access
1467    other attributes of the instance.  Note that at least for instance variables,
1468    you can fake total control by not inserting any values in the instance attribute
1469    dictionary (but instead inserting them in another object).  See the
1470    :meth:`__getattribute__` method below for a way to actually get total control in
1471    new-style classes.
1474 .. method:: object.__setattr__(self, name, value)
1476    Called when an attribute assignment is attempted.  This is called instead of the
1477    normal mechanism (i.e. store the value in the instance dictionary).  *name* is
1478    the attribute name, *value* is the value to be assigned to it.
1480    .. index:: single: __dict__ (instance attribute)
1482    If :meth:`__setattr__` wants to assign to an instance attribute, it should not
1483    simply execute ``self.name = value`` --- this would cause a recursive call to
1484    itself.  Instead, it should insert the value in the dictionary of instance
1485    attributes, e.g., ``self.__dict__[name] = value``.  For new-style classes,
1486    rather than accessing the instance dictionary, it should call the base class
1487    method with the same name, for example, ``object.__setattr__(self, name,
1488    value)``.
1491 .. method:: object.__delattr__(self, name)
1493    Like :meth:`__setattr__` but for attribute deletion instead of assignment.  This
1494    should only be implemented if ``del obj.name`` is meaningful for the object.
1497 .. _new-style-attribute-access:
1499 More attribute access for new-style classes
1500 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1502 The following methods only apply to new-style classes.
1505 .. method:: object.__getattribute__(self, name)
1507    Called unconditionally to implement attribute accesses for instances of the
1508    class. If the class also defines :meth:`__getattr__`, the latter will not be
1509    called unless :meth:`__getattribute__` either calls it explicitly or raises an
1510    :exc:`AttributeError`. This method should return the (computed) attribute value
1511    or raise an :exc:`AttributeError` exception. In order to avoid infinite
1512    recursion in this method, its implementation should always call the base class
1513    method with the same name to access any attributes it needs, for example,
1514    ``object.__getattribute__(self, name)``.
1516    .. note::
1518       This method may still be bypassed when looking up special methods as the
1519       result of implicit invocation via language syntax or builtin functions.
1520       See :ref:`new-style-special-lookup`.
1523 .. _descriptors:
1525 Implementing Descriptors
1526 ^^^^^^^^^^^^^^^^^^^^^^^^
1528 The following methods only apply when an instance of the class containing the
1529 method (a so-called *descriptor* class) appears in the class dictionary of
1530 another new-style class, known as the *owner* class. In the examples below, "the
1531 attribute" refers to the attribute whose name is the key of the property in the
1532 owner class' ``__dict__``.  Descriptors can only be implemented as new-style
1533 classes themselves.
1536 .. method:: object.__get__(self, instance, owner)
1538    Called to get the attribute of the owner class (class attribute access) or of an
1539    instance of that class (instance attribute access). *owner* is always the owner
1540    class, while *instance* is the instance that the attribute was accessed through,
1541    or ``None`` when the attribute is accessed through the *owner*.  This method
1542    should return the (computed) attribute value or raise an :exc:`AttributeError`
1543    exception.
1546 .. method:: object.__set__(self, instance, value)
1548    Called to set the attribute on an instance *instance* of the owner class to a
1549    new value, *value*.
1552 .. method:: object.__delete__(self, instance)
1554    Called to delete the attribute on an instance *instance* of the owner class.
1557 .. _descriptor-invocation:
1559 Invoking Descriptors
1560 ^^^^^^^^^^^^^^^^^^^^
1562 In general, a descriptor is an object attribute with "binding behavior", one
1563 whose attribute access has been overridden by methods in the descriptor
1564 protocol:  :meth:`__get__`, :meth:`__set__`, and :meth:`__delete__`. If any of
1565 those methods are defined for an object, it is said to be a descriptor.
1567 The default behavior for attribute access is to get, set, or delete the
1568 attribute from an object's dictionary. For instance, ``a.x`` has a lookup chain
1569 starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and
1570 continuing through the base classes of ``type(a)`` excluding metaclasses.
1572 However, if the looked-up value is an object defining one of the descriptor
1573 methods, then Python may override the default behavior and invoke the descriptor
1574 method instead.  Where this occurs in the precedence chain depends on which
1575 descriptor methods were defined and how they were called.  Note that descriptors
1576 are only invoked for new style objects or classes (ones that subclass
1577 :class:`object()` or :class:`type()`).
1579 The starting point for descriptor invocation is a binding, ``a.x``. How the
1580 arguments are assembled depends on ``a``:
1582 Direct Call
1583    The simplest and least common call is when user code directly invokes a
1584    descriptor method:    ``x.__get__(a)``.
1586 Instance Binding
1587    If binding to a new-style object instance, ``a.x`` is transformed into the call:
1588    ``type(a).__dict__['x'].__get__(a, type(a))``.
1590 Class Binding
1591    If binding to a new-style class, ``A.x`` is transformed into the call:
1592    ``A.__dict__['x'].__get__(None, A)``.
1594 Super Binding
1595    If ``a`` is an instance of :class:`super`, then the binding ``super(B,
1596    obj).m()`` searches ``obj.__class__.__mro__`` for the base class ``A``
1597    immediately preceding ``B`` and then invokes the descriptor with the call:
1598    ``A.__dict__['m'].__get__(obj, A)``.
1600 For instance bindings, the precedence of descriptor invocation depends on the
1601 which descriptor methods are defined.  Normally, data descriptors define both
1602 :meth:`__get__` and :meth:`__set__`, while non-data descriptors have just the
1603 :meth:`__get__` method.  Data descriptors always override a redefinition in an
1604 instance dictionary.  In contrast, non-data descriptors can be overridden by
1605 instances. [#]_
1607 Python methods (including :func:`staticmethod` and :func:`classmethod`) are
1608 implemented as non-data descriptors.  Accordingly, instances can redefine and
1609 override methods.  This allows individual instances to acquire behaviors that
1610 differ from other instances of the same class.
1612 The :func:`property` function is implemented as a data descriptor. Accordingly,
1613 instances cannot override the behavior of a property.
1616 .. _slots:
1618 __slots__
1619 ^^^^^^^^^
1621 By default, instances of both old and new-style classes have a dictionary for
1622 attribute storage.  This wastes space for objects having very few instance
1623 variables.  The space consumption can become acute when creating large numbers
1624 of instances.
1626 The default can be overridden by defining *__slots__* in a new-style class
1627 definition.  The *__slots__* declaration takes a sequence of instance variables
1628 and reserves just enough space in each instance to hold a value for each
1629 variable.  Space is saved because *__dict__* is not created for each instance.
1632 .. data:: __slots__
1634    This class variable can be assigned a string, iterable, or sequence of strings
1635    with variable names used by instances.  If defined in a new-style class,
1636    *__slots__* reserves space for the declared variables and prevents the automatic
1637    creation of *__dict__* and *__weakref__* for each instance.
1639    .. versionadded:: 2.2
1641 Notes on using *__slots__*
1643 * When inheriting from a class without *__slots__*, the *__dict__* attribute of
1644   that class will always be accessible, so a *__slots__* definition in the
1645   subclass is meaningless.
1647 * Without a *__dict__* variable, instances cannot be assigned new variables not
1648   listed in the *__slots__* definition.  Attempts to assign to an unlisted
1649   variable name raises :exc:`AttributeError`. If dynamic assignment of new
1650   variables is desired, then add ``'__dict__'`` to the sequence of strings in the
1651   *__slots__* declaration.
1653   .. versionchanged:: 2.3
1654      Previously, adding ``'__dict__'`` to the *__slots__* declaration would not
1655      enable the assignment of new attributes not specifically listed in the sequence
1656      of instance variable names.
1658 * Without a *__weakref__* variable for each instance, classes defining
1659   *__slots__* do not support weak references to its instances. If weak reference
1660   support is needed, then add ``'__weakref__'`` to the sequence of strings in the
1661   *__slots__* declaration.
1663   .. versionchanged:: 2.3
1664      Previously, adding ``'__weakref__'`` to the *__slots__* declaration would not
1665      enable support for weak references.
1667 * *__slots__* are implemented at the class level by creating descriptors
1668   (:ref:`descriptors`) for each variable name.  As a result, class attributes
1669   cannot be used to set default values for instance variables defined by
1670   *__slots__*; otherwise, the class attribute would overwrite the descriptor
1671   assignment.
1673 * If a class defines a slot also defined in a base class, the instance variable
1674   defined by the base class slot is inaccessible (except by retrieving its
1675   descriptor directly from the base class). This renders the meaning of the
1676   program undefined.  In the future, a check may be added to prevent this.
1678 * The action of a *__slots__* declaration is limited to the class where it is
1679   defined.  As a result, subclasses will have a *__dict__* unless they also define
1680   *__slots__*.
1682 * Nonempty *__slots__* does not work for classes derived from "variable-length"
1683   built-in types such as :class:`long`, :class:`str` and :class:`tuple`.
1685 * Any non-string iterable may be assigned to *__slots__*. Mappings may also be
1686   used; however, in the future, special meaning may be assigned to the values
1687   corresponding to each key.
1689 * *__class__* assignment works only if both classes have the same *__slots__*.
1691   .. versionchanged:: 2.6
1692      Previously, *__class__* assignment raised an error if either new or old class
1693      had *__slots__*.
1696 .. _metaclasses:
1698 Customizing class creation
1699 --------------------------
1701 By default, new-style classes are constructed using :func:`type`. A class
1702 definition is read into a separate namespace and the value of class name is
1703 bound to the result of ``type(name, bases, dict)``.
1705 When the class definition is read, if *__metaclass__* is defined then the
1706 callable assigned to it will be called instead of :func:`type`. This allows
1707 classes or functions to be written which monitor or alter the class creation
1708 process:
1710 * Modifying the class dictionary prior to the class being created.
1712 * Returning an instance of another class -- essentially performing the role of a
1713   factory function.
1715 These steps will have to be performed in the metaclass's :meth:`__new__` method
1716 -- :meth:`type.__new__` can then be called from this method to create a class
1717 with different properties.  This example adds a new element to the class
1718 dictionary before creating the class::
1720   class metacls(type):
1721       def __new__(mcs, name, bases, dict):
1722           dict['foo'] = 'metacls was here'
1723           return type.__new__(mcs, name, bases, dict)
1725 You can of course also override other class methods (or add new methods); for
1726 example defining a custom :meth:`__call__` method in the metaclass allows custom
1727 behavior when the class is called, e.g. not always creating a new instance.
1730 .. data:: __metaclass__
1732    This variable can be any callable accepting arguments for ``name``, ``bases``,
1733    and ``dict``.  Upon class creation, the callable is used instead of the built-in
1734    :func:`type`.
1736    .. versionadded:: 2.2
1738 The appropriate metaclass is determined by the following precedence rules:
1740 * If ``dict['__metaclass__']`` exists, it is used.
1742 * Otherwise, if there is at least one base class, its metaclass is used (this
1743   looks for a *__class__* attribute first and if not found, uses its type).
1745 * Otherwise, if a global variable named __metaclass__ exists, it is used.
1747 * Otherwise, the old-style, classic metaclass (types.ClassType) is used.
1749 The potential uses for metaclasses are boundless. Some ideas that have been
1750 explored including logging, interface checking, automatic delegation, automatic
1751 property creation, proxies, frameworks, and automatic resource
1752 locking/synchronization.
1755 .. _callable-types:
1757 Emulating callable objects
1758 --------------------------
1761 .. method:: object.__call__(self[, args...])
1763    .. index:: pair: call; instance
1765    Called when the instance is "called" as a function; if this method is defined,
1766    ``x(arg1, arg2, ...)`` is a shorthand for ``x.__call__(arg1, arg2, ...)``.
1769 .. _sequence-types:
1771 Emulating container types
1772 -------------------------
1774 The following methods can be defined to implement container objects.  Containers
1775 usually are sequences (such as lists or tuples) or mappings (like dictionaries),
1776 but can represent other containers as well.  The first set of methods is used
1777 either to emulate a sequence or to emulate a mapping; the difference is that for
1778 a sequence, the allowable keys should be the integers *k* for which ``0 <= k <
1779 N`` where *N* is the length of the sequence, or slice objects, which define a
1780 range of items. (For backwards compatibility, the method :meth:`__getslice__`
1781 (see below) can also be defined to handle simple, but not extended slices.) It
1782 is also recommended that mappings provide the methods :meth:`keys`,
1783 :meth:`values`, :meth:`items`, :meth:`has_key`, :meth:`get`, :meth:`clear`,
1784 :meth:`setdefault`, :meth:`iterkeys`, :meth:`itervalues`, :meth:`iteritems`,
1785 :meth:`pop`, :meth:`popitem`, :meth:`copy`, and :meth:`update` behaving similar
1786 to those for Python's standard dictionary objects.  The :mod:`UserDict` module
1787 provides a :class:`DictMixin` class to help create those methods from a base set
1788 of :meth:`__getitem__`, :meth:`__setitem__`, :meth:`__delitem__`, and
1789 :meth:`keys`. Mutable sequences should provide methods :meth:`append`,
1790 :meth:`count`, :meth:`index`, :meth:`extend`, :meth:`insert`, :meth:`pop`,
1791 :meth:`remove`, :meth:`reverse` and :meth:`sort`, like Python standard list
1792 objects.  Finally, sequence types should implement addition (meaning
1793 concatenation) and multiplication (meaning repetition) by defining the methods
1794 :meth:`__add__`, :meth:`__radd__`, :meth:`__iadd__`, :meth:`__mul__`,
1795 :meth:`__rmul__` and :meth:`__imul__` described below; they should not define
1796 :meth:`__coerce__` or other numerical operators.  It is recommended that both
1797 mappings and sequences implement the :meth:`__contains__` method to allow
1798 efficient use of the ``in`` operator; for mappings, ``in`` should be equivalent
1799 of :meth:`has_key`; for sequences, it should search through the values.  It is
1800 further recommended that both mappings and sequences implement the
1801 :meth:`__iter__` method to allow efficient iteration through the container; for
1802 mappings, :meth:`__iter__` should be the same as :meth:`iterkeys`; for
1803 sequences, it should iterate through the values.
1806 .. method:: object.__len__(self)
1808    .. index::
1809       builtin: len
1810       single: __nonzero__() (object method)
1812    Called to implement the built-in function :func:`len`.  Should return the length
1813    of the object, an integer ``>=`` 0.  Also, an object that doesn't define a
1814    :meth:`__nonzero__` method and whose :meth:`__len__` method returns zero is
1815    considered to be false in a Boolean context.
1818 .. method:: object.__getitem__(self, key)
1820    .. index:: object: slice
1822    Called to implement evaluation of ``self[key]``. For sequence types, the
1823    accepted keys should be integers and slice objects.  Note that the special
1824    interpretation of negative indexes (if the class wishes to emulate a sequence
1825    type) is up to the :meth:`__getitem__` method. If *key* is of an inappropriate
1826    type, :exc:`TypeError` may be raised; if of a value outside the set of indexes
1827    for the sequence (after any special interpretation of negative values),
1828    :exc:`IndexError` should be raised. For mapping types, if *key* is missing (not
1829    in the container), :exc:`KeyError` should be raised.
1831    .. note::
1833       :keyword:`for` loops expect that an :exc:`IndexError` will be raised for illegal
1834       indexes to allow proper detection of the end of the sequence.
1837 .. method:: object.__setitem__(self, key, value)
1839    Called to implement assignment to ``self[key]``.  Same note as for
1840    :meth:`__getitem__`.  This should only be implemented for mappings if the
1841    objects support changes to the values for keys, or if new keys can be added, or
1842    for sequences if elements can be replaced.  The same exceptions should be raised
1843    for improper *key* values as for the :meth:`__getitem__` method.
1846 .. method:: object.__delitem__(self, key)
1848    Called to implement deletion of ``self[key]``.  Same note as for
1849    :meth:`__getitem__`.  This should only be implemented for mappings if the
1850    objects support removal of keys, or for sequences if elements can be removed
1851    from the sequence.  The same exceptions should be raised for improper *key*
1852    values as for the :meth:`__getitem__` method.
1855 .. method:: object.__iter__(self)
1857    This method is called when an iterator is required for a container. This method
1858    should return a new iterator object that can iterate over all the objects in the
1859    container.  For mappings, it should iterate over the keys of the container, and
1860    should also be made available as the method :meth:`iterkeys`.
1862    Iterator objects also need to implement this method; they are required to return
1863    themselves.  For more information on iterator objects, see :ref:`typeiter`.
1866 .. method:: object.__reversed__(self)
1868    Called (if present) by the :func:`reversed` builtin to implement
1869    reverse iteration.  It should return a new iterator object that iterates
1870    over all the objects in the container in reverse order.
1872    If the :meth:`__reversed__` method is not provided, the
1873    :func:`reversed` builtin will fall back to using the sequence protocol
1874    (:meth:`__len__` and :meth:`__getitem__`).  Objects should normally
1875    only provide :meth:`__reversed__` if they do not support the sequence
1876    protocol and an efficient implementation of reverse iteration is possible.
1878    .. versionadded:: 2.6
1881 The membership test operators (:keyword:`in` and :keyword:`not in`) are normally
1882 implemented as an iteration through a sequence.  However, container objects can
1883 supply the following special method with a more efficient implementation, which
1884 also does not require the object be a sequence.
1887 .. method:: object.__contains__(self, item)
1889    Called to implement membership test operators.  Should return true if *item* is
1890    in *self*, false otherwise.  For mapping objects, this should consider the keys
1891    of the mapping rather than the values or the key-item pairs.
1894 .. _sequence-methods:
1896 Additional methods for emulation of sequence types
1897 --------------------------------------------------
1899 The following optional methods can be defined to further emulate sequence
1900 objects.  Immutable sequences methods should at most only define
1901 :meth:`__getslice__`; mutable sequences might define all three methods.
1904 .. method:: object.__getslice__(self, i, j)
1906    .. deprecated:: 2.0
1907       Support slice objects as parameters to the :meth:`__getitem__` method.
1908       (However, built-in types in CPython currently still implement
1909       :meth:`__getslice__`.  Therefore, you have to override it in derived
1910       classes when implementing slicing.)
1912    Called to implement evaluation of ``self[i:j]``. The returned object should be
1913    of the same type as *self*.  Note that missing *i* or *j* in the slice
1914    expression are replaced by zero or ``sys.maxint``, respectively.  If negative
1915    indexes are used in the slice, the length of the sequence is added to that
1916    index. If the instance does not implement the :meth:`__len__` method, an
1917    :exc:`AttributeError` is raised. No guarantee is made that indexes adjusted this
1918    way are not still negative.  Indexes which are greater than the length of the
1919    sequence are not modified. If no :meth:`__getslice__` is found, a slice object
1920    is created instead, and passed to :meth:`__getitem__` instead.
1923 .. method:: object.__setslice__(self, i, j, sequence)
1925    Called to implement assignment to ``self[i:j]``. Same notes for *i* and *j* as
1926    for :meth:`__getslice__`.
1928    This method is deprecated. If no :meth:`__setslice__` is found, or for extended
1929    slicing of the form ``self[i:j:k]``, a slice object is created, and passed to
1930    :meth:`__setitem__`, instead of :meth:`__setslice__` being called.
1933 .. method:: object.__delslice__(self, i, j)
1935    Called to implement deletion of ``self[i:j]``. Same notes for *i* and *j* as for
1936    :meth:`__getslice__`. This method is deprecated. If no :meth:`__delslice__` is
1937    found, or for extended slicing of the form ``self[i:j:k]``, a slice object is
1938    created, and passed to :meth:`__delitem__`, instead of :meth:`__delslice__`
1939    being called.
1941 Notice that these methods are only invoked when a single slice with a single
1942 colon is used, and the slice method is available.  For slice operations
1943 involving extended slice notation, or in absence of the slice methods,
1944 :meth:`__getitem__`, :meth:`__setitem__` or :meth:`__delitem__` is called with a
1945 slice object as argument.
1947 The following example demonstrate how to make your program or module compatible
1948 with earlier versions of Python (assuming that methods :meth:`__getitem__`,
1949 :meth:`__setitem__` and :meth:`__delitem__` support slice objects as
1950 arguments)::
1952    class MyClass:
1953        ...
1954        def __getitem__(self, index):
1955            ...
1956        def __setitem__(self, index, value):
1957            ...
1958        def __delitem__(self, index):
1959            ...
1961        if sys.version_info < (2, 0):
1962            # They won't be defined if version is at least 2.0 final
1964            def __getslice__(self, i, j):
1965                return self[max(0, i):max(0, j):]
1966            def __setslice__(self, i, j, seq):
1967                self[max(0, i):max(0, j):] = seq
1968            def __delslice__(self, i, j):
1969                del self[max(0, i):max(0, j):]
1970        ...
1972 Note the calls to :func:`max`; these are necessary because of the handling of
1973 negative indices before the :meth:`__\*slice__` methods are called.  When
1974 negative indexes are used, the :meth:`__\*item__` methods receive them as
1975 provided, but the :meth:`__\*slice__` methods get a "cooked" form of the index
1976 values.  For each negative index value, the length of the sequence is added to
1977 the index before calling the method (which may still result in a negative
1978 index); this is the customary handling of negative indexes by the built-in
1979 sequence types, and the :meth:`__\*item__` methods are expected to do this as
1980 well.  However, since they should already be doing that, negative indexes cannot
1981 be passed in; they must be constrained to the bounds of the sequence before
1982 being passed to the :meth:`__\*item__` methods. Calling ``max(0, i)``
1983 conveniently returns the proper value.
1986 .. _numeric-types:
1988 Emulating numeric types
1989 -----------------------
1991 The following methods can be defined to emulate numeric objects. Methods
1992 corresponding to operations that are not supported by the particular kind of
1993 number implemented (e.g., bitwise operations for non-integral numbers) should be
1994 left undefined.
1997 .. method:: object.__add__(self, other)
1998             object.__sub__(self, other)
1999             object.__mul__(self, other)
2000             object.__floordiv__(self, other)
2001             object.__mod__(self, other)
2002             object.__divmod__(self, other)
2003             object.__pow__(self, other[, modulo])
2004             object.__lshift__(self, other)
2005             object.__rshift__(self, other)
2006             object.__and__(self, other)
2007             object.__xor__(self, other)
2008             object.__or__(self, other)
2010    .. index::
2011       builtin: divmod
2012       builtin: pow
2013       builtin: pow
2015    These methods are called to implement the binary arithmetic operations (``+``,
2016    ``-``, ``*``, ``//``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``,
2017    ``>>``, ``&``, ``^``, ``|``).  For instance, to evaluate the expression
2018    ``x + y``, where *x* is an instance of a class that has an :meth:`__add__`
2019    method, ``x.__add__(y)`` is called.  The :meth:`__divmod__` method should be the
2020    equivalent to using :meth:`__floordiv__` and :meth:`__mod__`; it should not be
2021    related to :meth:`__truediv__` (described below).  Note that :meth:`__pow__`
2022    should be defined to accept an optional third argument if the ternary version of
2023    the built-in :func:`pow` function is to be supported.
2025    If one of those methods does not support the operation with the supplied
2026    arguments, it should return ``NotImplemented``.
2029 .. method:: object.__div__(self, other)
2030             object.__truediv__(self, other)
2032    The division operator (``/``) is implemented by these methods.  The
2033    :meth:`__truediv__` method is used when ``__future__.division`` is in effect,
2034    otherwise :meth:`__div__` is used.  If only one of these two methods is defined,
2035    the object will not support division in the alternate context; :exc:`TypeError`
2036    will be raised instead.
2039 .. method:: object.__radd__(self, other)
2040             object.__rsub__(self, other)
2041             object.__rmul__(self, other)
2042             object.__rdiv__(self, other)
2043             object.__rtruediv__(self, other)
2044             object.__rfloordiv__(self, other)
2045             object.__rmod__(self, other)
2046             object.__rdivmod__(self, other)
2047             object.__rpow__(self, other)
2048             object.__rlshift__(self, other)
2049             object.__rrshift__(self, other)
2050             object.__rand__(self, other)
2051             object.__rxor__(self, other)
2052             object.__ror__(self, other)
2054    .. index::
2055       builtin: divmod
2056       builtin: pow
2058    These methods are called to implement the binary arithmetic operations (``+``,
2059    ``-``, ``*``, ``/``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``, ``>>``,
2060    ``&``, ``^``, ``|``) with reflected (swapped) operands.  These functions are
2061    only called if the left operand does not support the corresponding operation and
2062    the operands are of different types. [#]_ For instance, to evaluate the
2063    expression ``x - y``, where *y* is an instance of a class that has an
2064    :meth:`__rsub__` method, ``y.__rsub__(x)`` is called if ``x.__sub__(y)`` returns
2065    *NotImplemented*.
2067    .. index:: builtin: pow
2069    Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the
2070    coercion rules would become too complicated).
2072    .. note::
2074       If the right operand's type is a subclass of the left operand's type and that
2075       subclass provides the reflected method for the operation, this method will be
2076       called before the left operand's non-reflected method.  This behavior allows
2077       subclasses to override their ancestors' operations.
2080 .. method:: object.__iadd__(self, other)
2081             object.__isub__(self, other)
2082             object.__imul__(self, other)
2083             object.__idiv__(self, other)
2084             object.__itruediv__(self, other)
2085             object.__ifloordiv__(self, other)
2086             object.__imod__(self, other)
2087             object.__ipow__(self, other[, modulo])
2088             object.__ilshift__(self, other)
2089             object.__irshift__(self, other)
2090             object.__iand__(self, other)
2091             object.__ixor__(self, other)
2092             object.__ior__(self, other)
2094    These methods are called to implement the augmented arithmetic assignments
2095    (``+=``, ``-=``, ``*=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, ``>>=``,
2096    ``&=``, ``^=``, ``|=``).  These methods should attempt to do the operation
2097    in-place (modifying *self*) and return the result (which could be, but does
2098    not have to be, *self*).  If a specific method is not defined, the augmented
2099    assignment falls back to the normal methods.  For instance, to execute the
2100    statement ``x += y``, where *x* is an instance of a class that has an
2101    :meth:`__iadd__` method, ``x.__iadd__(y)`` is called.  If *x* is an instance
2102    of a class that does not define a :meth:`__iadd__` method, ``x.__add__(y)``
2103    and ``y.__radd__(x)`` are considered, as with the evaluation of ``x + y``.
2106 .. method:: object.__neg__(self)
2107             object.__pos__(self)
2108             object.__abs__(self)
2109             object.__invert__(self)
2111    .. index:: builtin: abs
2113    Called to implement the unary arithmetic operations (``-``, ``+``, :func:`abs`
2114    and ``~``).
2117 .. method:: object.__complex__(self)
2118             object.__int__(self)
2119             object.__long__(self)
2120             object.__float__(self)
2122    .. index::
2123       builtin: complex
2124       builtin: int
2125       builtin: long
2126       builtin: float
2128    Called to implement the built-in functions :func:`complex`, :func:`int`,
2129    :func:`long`, and :func:`float`.  Should return a value of the appropriate type.
2132 .. method:: object.__oct__(self)
2133             object.__hex__(self)
2135    .. index::
2136       builtin: oct
2137       builtin: hex
2139    Called to implement the built-in functions :func:`oct` and :func:`hex`.  Should
2140    return a string value.
2143 .. method:: object.__index__(self)
2145    Called to implement :func:`operator.index`.  Also called whenever Python needs
2146    an integer object (such as in slicing).  Must return an integer (int or long).
2148    .. versionadded:: 2.5
2151 .. method:: object.__coerce__(self, other)
2153    Called to implement "mixed-mode" numeric arithmetic.  Should either return a
2154    2-tuple containing *self* and *other* converted to a common numeric type, or
2155    ``None`` if conversion is impossible.  When the common type would be the type of
2156    ``other``, it is sufficient to return ``None``, since the interpreter will also
2157    ask the other object to attempt a coercion (but sometimes, if the implementation
2158    of the other type cannot be changed, it is useful to do the conversion to the
2159    other type here).  A return value of ``NotImplemented`` is equivalent to
2160    returning ``None``.
2163 .. _coercion-rules:
2165 Coercion rules
2166 --------------
2168 This section used to document the rules for coercion.  As the language has
2169 evolved, the coercion rules have become hard to document precisely; documenting
2170 what one version of one particular implementation does is undesirable.  Instead,
2171 here are some informal guidelines regarding coercion.  In Python 3.0, coercion
2172 will not be supported.
2176   If the left operand of a % operator is a string or Unicode object, no coercion
2177   takes place and the string formatting operation is invoked instead.
2181   It is no longer recommended to define a coercion operation. Mixed-mode
2182   operations on types that don't define coercion pass the original arguments to
2183   the operation.
2187   New-style classes (those derived from :class:`object`) never invoke the
2188   :meth:`__coerce__` method in response to a binary operator; the only time
2189   :meth:`__coerce__` is invoked is when the built-in function :func:`coerce` is
2190   called.
2194   For most intents and purposes, an operator that returns ``NotImplemented`` is
2195   treated the same as one that is not implemented at all.
2199   Below, :meth:`__op__` and :meth:`__rop__` are used to signify the generic method
2200   names corresponding to an operator; :meth:`__iop__` is used for the
2201   corresponding in-place operator.  For example, for the operator '``+``',
2202   :meth:`__add__` and :meth:`__radd__` are used for the left and right variant of
2203   the binary operator, and :meth:`__iadd__` for the in-place variant.
2207   For objects *x* and *y*, first ``x.__op__(y)`` is tried.  If this is not
2208   implemented or returns ``NotImplemented``, ``y.__rop__(x)`` is tried.  If this
2209   is also not implemented or returns ``NotImplemented``, a :exc:`TypeError`
2210   exception is raised.  But see the following exception:
2214   Exception to the previous item: if the left operand is an instance of a built-in
2215   type or a new-style class, and the right operand is an instance of a proper
2216   subclass of that type or class and overrides the base's :meth:`__rop__` method,
2217   the right operand's :meth:`__rop__` method is tried *before* the left operand's
2218   :meth:`__op__` method.
2220   This is done so that a subclass can completely override binary operators.
2221   Otherwise, the left operand's :meth:`__op__` method would always accept the
2222   right operand: when an instance of a given class is expected, an instance of a
2223   subclass of that class is always acceptable.
2227   When either operand type defines a coercion, this coercion is called before that
2228   type's :meth:`__op__` or :meth:`__rop__` method is called, but no sooner.  If
2229   the coercion returns an object of a different type for the operand whose
2230   coercion is invoked, part of the process is redone using the new object.
2234   When an in-place operator (like '``+=``') is used, if the left operand
2235   implements :meth:`__iop__`, it is invoked without any coercion.  When the
2236   operation falls back to :meth:`__op__` and/or :meth:`__rop__`, the normal
2237   coercion rules apply.
2241   In ``x + y``, if *x* is a sequence that implements sequence concatenation,
2242   sequence concatenation is invoked.
2246   In ``x * y``, if one operator is a sequence that implements sequence
2247   repetition, and the other is an integer (:class:`int` or :class:`long`),
2248   sequence repetition is invoked.
2252   Rich comparisons (implemented by methods :meth:`__eq__` and so on) never use
2253   coercion.  Three-way comparison (implemented by :meth:`__cmp__`) does use
2254   coercion under the same conditions as other binary operations use it.
2258   In the current implementation, the built-in numeric types :class:`int`,
2259   :class:`long` and :class:`float` do not use coercion; the type :class:`complex`
2260   however does use coercion for binary operators and rich comparisons, despite
2261   the above rules.  The difference can become apparent when subclassing these
2262   types.  Over time, the type :class:`complex` may be fixed to avoid coercion.
2263   All these types implement a :meth:`__coerce__` method, for use by the built-in
2264   :func:`coerce` function.
2267 .. _context-managers:
2269 With Statement Context Managers
2270 -------------------------------
2272 .. versionadded:: 2.5
2274 A :dfn:`context manager` is an object that defines the runtime context to be
2275 established when executing a :keyword:`with` statement. The context manager
2276 handles the entry into, and the exit from, the desired runtime context for the
2277 execution of the block of code.  Context managers are normally invoked using the
2278 :keyword:`with` statement (described in section :ref:`with`), but can also be
2279 used by directly invoking their methods.
2281 .. index::
2282    statement: with
2283    single: context manager
2285 Typical uses of context managers include saving and restoring various kinds of
2286 global state, locking and unlocking resources, closing opened files, etc.
2288 For more information on context managers, see :ref:`typecontextmanager`.
2291 .. method:: object.__enter__(self)
2293    Enter the runtime context related to this object. The :keyword:`with` statement
2294    will bind this method's return value to the target(s) specified in the
2295    :keyword:`as` clause of the statement, if any.
2298 .. method:: object.__exit__(self, exc_type, exc_value, traceback)
2300    Exit the runtime context related to this object. The parameters describe the
2301    exception that caused the context to be exited. If the context was exited
2302    without an exception, all three arguments will be :const:`None`.
2304    If an exception is supplied, and the method wishes to suppress the exception
2305    (i.e., prevent it from being propagated), it should return a true value.
2306    Otherwise, the exception will be processed normally upon exit from this method.
2308    Note that :meth:`__exit__` methods should not reraise the passed-in exception;
2309    this is the caller's responsibility.
2312 .. seealso::
2314    :pep:`0343` - The "with" statement
2315       The specification, background, and examples for the Python :keyword:`with`
2316       statement.
2319 .. _old-style-special-lookup:
2321 Special method lookup for old-style classes
2322 -------------------------------------------
2324 For old-style classes, special methods are always looked up in exactly the
2325 same way as any other method or attribute. This is the case regardless of
2326 whether the method is being looked up explicitly as in ``x.__getitem__(i)``
2327 or implicitly as in ``x[i]``.
2329 This behaviour means that special methods may exhibit different behaviour
2330 for different instances of a single old-style class if the appropriate
2331 special attributes are set differently::
2333    >>> class C:
2334    ...     pass
2335    ...
2336    >>> c1 = C()
2337    >>> c2 = C()
2338    >>> c1.__len__ = lambda: 5
2339    >>> c2.__len__ = lambda: 9
2340    >>> len(c1)
2341    5
2342    >>> len(c2)
2343    9
2346 .. _new-style-special-lookup:
2348 Special method lookup for new-style classes
2349 -------------------------------------------
2351 For new-style classes, implicit invocations of special methods are only guaranteed
2352 to work correctly if defined on an object's type, not in the object's instance
2353 dictionary.  That behaviour is the reason why the following code raises an
2354 exception (unlike the equivalent example with old-style classes)::
2356    >>> class C(object):
2357    ...     pass
2358    ...
2359    >>> c = C()
2360    >>> c.__len__ = lambda: 5
2361    >>> len(c)
2362    Traceback (most recent call last):
2363      File "<stdin>", line 1, in <module>
2364    TypeError: object of type 'C' has no len()
2366 The rationale behind this behaviour lies with a number of special methods such
2367 as :meth:`__hash__` and :meth:`__repr__` that are implemented by all objects,
2368 including type objects. If the implicit lookup of these methods used the
2369 conventional lookup process, they would fail when invoked on the type object
2370 itself::
2372    >>> 1 .__hash__() == hash(1)
2373    True
2374    >>> int.__hash__() == hash(int)
2375    Traceback (most recent call last):
2376      File "<stdin>", line 1, in <module>
2377    TypeError: descriptor '__hash__' of 'int' object needs an argument
2379 Incorrectly attempting to invoke an unbound method of a class in this way is
2380 sometimes referred to as 'metaclass confusion', and is avoided by bypassing
2381 the instance when looking up special methods::
2383    >>> type(1).__hash__(1) == hash(1)
2384    True
2385    >>> type(int).__hash__(int) == hash(int)
2386    True
2388 In addition to bypassing any instance attributes in the interest of
2389 correctness, implicit special method lookup generally also bypasses the
2390 :meth:`__getattribute__` method even of the object's metaclass::
2392    >>> class Meta(type):
2393    ...    def __getattribute__(*args):
2394    ...       print "Metaclass getattribute invoked"
2395    ...       return type.__getattribute__(*args)
2396    ...
2397    >>> class C(object):
2398    ...     __metaclass__ = Meta
2399    ...     def __len__(self):
2400    ...         return 10
2401    ...     def __getattribute__(*args):
2402    ...         print "Class getattribute invoked"
2403    ...         return object.__getattribute__(*args)
2404    ...
2405    >>> c = C()
2406    >>> c.__len__()                 # Explicit lookup via instance
2407    Class getattribute invoked
2408    10
2409    >>> type(c).__len__(c)          # Explicit lookup via type
2410    Metaclass getattribute invoked
2411    10
2412    >>> len(c)                      # Implicit lookup
2413    10
2415 Bypassing the :meth:`__getattribute__` machinery in this fashion
2416 provides significant scope for speed optimisations within the
2417 interpreter, at the cost of some flexibility in the handling of
2418 special methods (the special method *must* be set on the class
2419 object itself in order to be consistently invoked by the interpreter).
2422 .. rubric:: Footnotes
2424 .. [#] It *is* possible in some cases to change an object's type, under certain
2425    controlled conditions. It generally isn't a good idea though, since it can
2426    lead to some very strange behaviour if it is handled incorrectly.
2428 .. [#] A descriptor can define any combination of :meth:`__get__`,
2429    :meth:`__set__` and :meth:`__delete__`.  If it does not define :meth:`__get__`,
2430    then accessing the attribute even on an instance will return the descriptor
2431    object itself.  If the descriptor defines :meth:`__set__` and/or
2432    :meth:`__delete__`, it is a data descriptor; if it defines neither, it is a
2433    non-data descriptor.
2435 .. [#] For operands of the same type, it is assumed that if the non-reflected method
2436    (such as :meth:`__add__`) fails the operation is not supported, which is why the
2437    reflected method is not called.