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