blob: 75cb52f5d3e24a5e179d179ae3fb7db273104e06 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001
2.. _datamodel:
3
4**********
5Data model
6**********
7
8
9.. _objects:
10
11Objects, values and types
12=========================
13
14.. index::
15 single: object
16 single: data
17
18:dfn:`Objects` are Python's abstraction for data. All data in a Python program
19is represented by objects or by relations between objects. (In a sense, and in
20conformance to Von Neumann's model of a "stored program computer," code is also
21represented by objects.)
22
23.. index::
24 builtin: id
25 builtin: type
26 single: identity of an object
27 single: value of an object
28 single: type of an object
29 single: mutable object
30 single: immutable object
31
Georg Brandl85eb8c12007-08-31 16:33:38 +000032.. XXX it *is* now possible in some cases to change an object's
33 type, under certain controlled conditions
34
Georg Brandl116aa622007-08-15 14:28:22 +000035Every object has an identity, a type and a value. An object's *identity* never
36changes once it has been created; you may think of it as the object's address in
37memory. The ':keyword:`is`' operator compares the identity of two objects; the
38:func:`id` function returns an integer representing its identity (currently
Georg Brandl85eb8c12007-08-31 16:33:38 +000039implemented as its address). An object's :dfn:`type` is also unchangeable.
Georg Brandl116aa622007-08-15 14:28:22 +000040An object's type determines the operations that the object supports (e.g., "does
41it have a length?") and also defines the possible values for objects of that
42type. The :func:`type` function returns an object's type (which is an object
43itself). The *value* of some objects can change. Objects whose value can
44change are said to be *mutable*; objects whose value is unchangeable once they
45are created are called *immutable*. (The value of an immutable container object
46that contains a reference to a mutable object can change when the latter's value
47is changed; however the container is still considered immutable, because the
48collection of objects it contains cannot be changed. So, immutability is not
49strictly the same as having an unchangeable value, it is more subtle.) An
50object's mutability is determined by its type; for instance, numbers, strings
51and tuples are immutable, while dictionaries and lists are mutable.
52
53.. index::
54 single: garbage collection
55 single: reference counting
56 single: unreachable object
57
58Objects are never explicitly destroyed; however, when they become unreachable
59they may be garbage-collected. An implementation is allowed to postpone garbage
60collection or omit it altogether --- it is a matter of implementation quality
61how garbage collection is implemented, as long as no objects are collected that
62are still reachable. (Implementation note: the current implementation uses a
63reference-counting scheme with (optional) delayed detection of cyclically linked
64garbage, which collects most objects as soon as they become unreachable, but is
65not guaranteed to collect garbage containing circular references. See the
66documentation of the :mod:`gc` module for information on controlling the
67collection of cyclic garbage.)
68
69Note that the use of the implementation's tracing or debugging facilities may
70keep objects alive that would normally be collectable. Also note that catching
71an exception with a ':keyword:`try`...\ :keyword:`except`' statement may keep
72objects alive.
73
74Some objects contain references to "external" resources such as open files or
75windows. It is understood that these resources are freed when the object is
76garbage-collected, but since garbage collection is not guaranteed to happen,
77such objects also provide an explicit way to release the external resource,
78usually a :meth:`close` method. Programs are strongly recommended to explicitly
79close such objects. The ':keyword:`try`...\ :keyword:`finally`' statement
80provides a convenient way to do this.
81
82.. index:: single: container
83
84Some objects contain references to other objects; these are called *containers*.
85Examples of containers are tuples, lists and dictionaries. The references are
86part of a container's value. In most cases, when we talk about the value of a
87container, we imply the values, not the identities of the contained objects;
88however, when we talk about the mutability of a container, only the identities
89of the immediately contained objects are implied. So, if an immutable container
90(like a tuple) contains a reference to a mutable object, its value changes if
91that mutable object is changed.
92
93Types affect almost all aspects of object behavior. Even the importance of
94object identity is affected in some sense: for immutable types, operations that
95compute new values may actually return a reference to any existing object with
96the same type and value, while for mutable objects this is not allowed. E.g.,
97after ``a = 1; b = 1``, ``a`` and ``b`` may or may not refer to the same object
98with the value one, depending on the implementation, but after ``c = []; d =
99[]``, ``c`` and ``d`` are guaranteed to refer to two different, unique, newly
100created empty lists. (Note that ``c = d = []`` assigns the same object to both
101``c`` and ``d``.)
102
103
104.. _types:
105
106The standard type hierarchy
107===========================
108
109.. index::
110 single: type
111 pair: data; type
112 pair: type; hierarchy
113 pair: extension; module
114 pair: C; language
115
116Below is a list of the types that are built into Python. Extension modules
117(written in C, Java, or other languages, depending on the implementation) can
118define additional types. Future versions of Python may add types to the type
119hierarchy (e.g., rational numbers, efficiently stored arrays of integers, etc.).
120
121.. index::
122 single: attribute
123 pair: special; attribute
124 triple: generic; special; attribute
125
126Some of the type descriptions below contain a paragraph listing 'special
127attributes.' These are attributes that provide access to the implementation and
128are not intended for general use. Their definition may change in the future.
129
130None
131 .. index:: object: None
132
133 This type has a single value. There is a single object with this value. This
134 object is accessed through the built-in name ``None``. It is used to signify the
135 absence of a value in many situations, e.g., it is returned from functions that
136 don't explicitly return anything. Its truth value is false.
137
138NotImplemented
139 .. index:: object: NotImplemented
140
141 This type has a single value. There is a single object with this value. This
142 object is accessed through the built-in name ``NotImplemented``. Numeric methods
143 and rich comparison methods may return this value if they do not implement the
144 operation for the operands provided. (The interpreter will then try the
145 reflected operation, or some other fallback, depending on the operator.) Its
146 truth value is true.
147
148Ellipsis
149 .. index:: object: Ellipsis
150
151 This type has a single value. There is a single object with this value. This
152 object is accessed through the literal ``...`` or the built-in name
153 ``Ellipsis``. Its truth value is true.
154
155Numbers
156 .. index:: object: numeric
157
158 These are created by numeric literals and returned as results by arithmetic
159 operators and arithmetic built-in functions. Numeric objects are immutable;
160 once created their value never changes. Python numbers are of course strongly
161 related to mathematical numbers, but subject to the limitations of numerical
162 representation in computers.
163
164 Python distinguishes between integers, floating point numbers, and complex
165 numbers:
166
167 Integers
168 .. index:: object: integer
169
170 These represent elements from the mathematical set of integers (positive and
171 negative).
172
173 There are three types of integers:
174
175 Plain integers
176 .. index::
177 object: plain integer
178 single: OverflowError (built-in exception)
179
180 These represent numbers in the range -2147483648 through 2147483647. (The range
181 may be larger on machines with a larger natural word size, but not smaller.)
182 When the result of an operation would fall outside this range, the result is
183 normally returned as a long integer (in some cases, the exception
184 :exc:`OverflowError` is raised instead). For the purpose of shift and mask
185 operations, integers are assumed to have a binary, 2's complement notation using
186 32 or more bits, and hiding no bits from the user (i.e., all 4294967296
187 different bit patterns correspond to different values).
188
189 Long integers
190 .. index:: object: long integer
191
192 These represent numbers in an unlimited range, subject to available (virtual)
193 memory only. For the purpose of shift and mask operations, a binary
194 representation is assumed, and negative numbers are represented in a variant of
195 2's complement which gives the illusion of an infinite string of sign bits
196 extending to the left.
197
198 Booleans
199 .. index::
200 object: Boolean
201 single: False
202 single: True
203
204 These represent the truth values False and True. The two objects representing
205 the values False and True are the only Boolean objects. The Boolean type is a
206 subtype of plain integers, and Boolean values behave like the values 0 and 1,
207 respectively, in almost all contexts, the exception being that when converted to
208 a string, the strings ``"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 meaningful
213 interpretation of shift and mask operations involving negative integers and the
214 least surprises when switching between the plain and long integer domains. Any
215 operation except left shift, if it yields a result in the plain integer domain
216 without causing overflow, will yield the same result in the long integer domain
217 or when using mixed operands.
218
219 .. % Integers
220
221 Floating point numbers
222 .. index::
223 object: floating point
224 pair: floating point; number
225 pair: C; language
226 pair: Java; language
227
228 These represent machine-level double precision floating point numbers. You are
229 at the mercy of the underlying machine architecture (and C or Java
230 implementation) for the accepted range and handling of overflow. Python does not
231 support single-precision floating point numbers; the savings in processor and
232 memory usage that are usually the reason for using these is dwarfed by the
233 overhead of using objects in Python, so there is no reason to complicate the
234 language with two kinds of floating point numbers.
235
236 Complex numbers
237 .. index::
238 object: complex
239 pair: complex; number
240
241 These represent complex numbers as a pair of machine-level double precision
242 floating point numbers. The same caveats apply as for floating point numbers.
243 The real and imaginary parts of a complex number ``z`` can be retrieved through
244 the read-only attributes ``z.real`` and ``z.imag``.
245
246 .. % Numbers
247
248Sequences
249 .. index::
250 builtin: len
251 object: sequence
252 single: index operation
253 single: item selection
254 single: subscription
255
256 These represent finite ordered sets indexed by non-negative numbers. The
257 built-in function :func:`len` returns the number of items of a sequence. When
258 the length of a sequence is *n*, the index set contains the numbers 0, 1,
259 ..., *n*-1. Item *i* of sequence *a* is selected by ``a[i]``.
260
261 .. index:: single: slicing
262
263 Sequences also support slicing: ``a[i:j]`` selects all items with index *k* such
264 that *i* ``<=`` *k* ``<`` *j*. When used as an expression, a slice is a
265 sequence of the same type. This implies that the index set is renumbered so
266 that it starts at 0.
267
Georg Brandl116aa622007-08-15 14:28:22 +0000268 Some sequences also support "extended slicing" with a third "step" parameter:
269 ``a[i:j:k]`` selects all items of *a* with index *x* where ``x = i + n*k``, *n*
270 ``>=`` ``0`` and *i* ``<=`` *x* ``<`` *j*.
271
272 Sequences are distinguished according to their mutability:
273
274 Immutable sequences
275 .. index::
276 object: immutable sequence
277 object: immutable
278
279 An object of an immutable sequence type cannot change once it is created. (If
280 the object contains references to other objects, these other objects may be
281 mutable and may be changed; however, the collection of objects directly
282 referenced by an immutable object cannot change.)
283
284 The following types are immutable sequences:
285
286 Strings
287 .. index::
288 builtin: chr
289 builtin: ord
Georg Brandldcc56f82007-08-31 16:41:12 +0000290 builtin: str
Georg Brandl116aa622007-08-15 14:28:22 +0000291 single: character
292 single: integer
293 single: Unicode
294
Georg Brandldcc56f82007-08-31 16:41:12 +0000295 The items of a string object are Unicode code units. A Unicode code
296 unit is represented by a string object of one item and can hold either
297 a 16-bit or 32-bit value representing a Unicode ordinal (the maximum
298 value for the ordinal is given in ``sys.maxunicode``, and depends on
299 how Python is configured at compile time). Surrogate pairs may be
300 present in the Unicode object, and will be reported as two separate
301 items. The built-in functions :func:`chr` and :func:`ord` convert
302 between code units and nonnegative integers representing the Unicode
303 ordinals as defined in the Unicode Standard 3.0. Conversion from and to
304 other encodings are possible through the string method :meth:`encode`.
Georg Brandl116aa622007-08-15 14:28:22 +0000305
306 Tuples
307 .. index::
308 object: tuple
309 pair: singleton; tuple
310 pair: empty; tuple
311
Georg Brandldcc56f82007-08-31 16:41:12 +0000312 The items of a tuple are arbitrary Python objects. Tuples of two or
313 more items are formed by comma-separated lists of expressions. A tuple
314 of one item (a 'singleton') can be formed by affixing a comma to an
315 expression (an expression by itself does not create a tuple, since
316 parentheses must be usable for grouping of expressions). An empty
317 tuple can be formed by an empty pair of parentheses.
Georg Brandl116aa622007-08-15 14:28:22 +0000318
319 .. % Immutable sequences
320
321 Mutable sequences
322 .. index::
323 object: mutable sequence
324 object: mutable
325 pair: assignment; statement
326 single: delete
327 statement: del
328 single: subscription
329 single: slicing
330
331 Mutable sequences can be changed after they are created. The subscription and
332 slicing notations can be used as the target of assignment and :keyword:`del`
333 (delete) statements.
334
335 There is currently a single intrinsic mutable sequence type:
336
337 Lists
338 .. index:: object: list
339
Georg Brandldcc56f82007-08-31 16:41:12 +0000340 The items of a list are arbitrary Python objects. Lists are formed by
341 placing a comma-separated list of expressions in square brackets. (Note
342 that there are no special cases needed to form lists of length 0 or 1.)
343
344 Bytes
345 .. index:: bytes, byte
346
347 A bytes object is a mutable array. The items are 8-bit bytes,
348 represented by integers in the range 0 <= x < 256. Bytes literals
349 (like ``b'abc'`` and the built-in function :func:`bytes` can be used to
350 construct bytes objects. Also, bytes objects can be decoded to strings
351 via the :meth:`decode` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000352
353 .. index:: module: array
354
Georg Brandldcc56f82007-08-31 16:41:12 +0000355 The extension module :mod:`array` provides an additional example of a
356 mutable sequence type.
Georg Brandl116aa622007-08-15 14:28:22 +0000357
358 .. % Mutable sequences
359
360 .. % Sequences
361
362Set types
363 .. index::
364 builtin: len
365 object: set type
366
367 These represent unordered, finite sets of unique, immutable objects. As such,
368 they cannot be indexed by any subscript. However, they can be iterated over, and
369 the built-in function :func:`len` returns the number of items in a set. Common
370 uses for sets are fast membership testing, removing duplicates from a sequence,
371 and computing mathematical operations such as intersection, union, difference,
372 and symmetric difference.
373
374 For set elements, the same immutability rules apply as for dictionary keys. Note
375 that numeric types obey the normal rules for numeric comparison: if two numbers
376 compare equal (e.g., ``1`` and ``1.0``), only one of them can be contained in a
377 set.
378
379 There are currently two intrinsic set types:
380
381 Sets
382 .. index:: object: set
383
384 These represent a mutable set. They are created by the built-in :func:`set`
385 constructor and can be modified afterwards by several methods, such as
386 :meth:`add`.
387
388 Frozen sets
389 .. index:: object: frozenset
390
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000391 These represent an immutable set. They are created by the built-in
392 :func:`frozenset` constructor. As a frozenset is immutable and
393 :term:`hashable`, it can be used again as an element of another set, or as
394 a dictionary key.
Georg Brandl116aa622007-08-15 14:28:22 +0000395
396 .. % Set types
397
398Mappings
399 .. index::
400 builtin: len
401 single: subscription
402 object: mapping
403
404 These represent finite sets of objects indexed by arbitrary index sets. The
405 subscript notation ``a[k]`` selects the item indexed by ``k`` from the mapping
406 ``a``; this can be used in expressions and as the target of assignments or
407 :keyword:`del` statements. The built-in function :func:`len` returns the number
408 of items in a mapping.
409
410 There is currently a single intrinsic mapping type:
411
412 Dictionaries
413 .. index:: object: dictionary
414
415 These represent finite sets of objects indexed by nearly arbitrary values. The
416 only types of values not acceptable as keys are values containing lists or
417 dictionaries or other mutable types that are compared by value rather than by
418 object identity, the reason being that the efficient implementation of
419 dictionaries requires a key's hash value to remain constant. Numeric types used
420 for keys obey the normal rules for numeric comparison: if two numbers compare
421 equal (e.g., ``1`` and ``1.0``) then they can be used interchangeably to index
422 the same dictionary entry.
423
424 Dictionaries are mutable; they can be created by the ``{...}`` notation (see
425 section :ref:`dict`).
426
427 .. index::
428 module: dbm
429 module: gdbm
430 module: bsddb
431
432 The extension modules :mod:`dbm`, :mod:`gdbm`, and :mod:`bsddb` provide
433 additional examples of mapping types.
434
435 .. % Mapping types
436
437Callable types
438 .. index::
439 object: callable
440 pair: function; call
441 single: invocation
442 pair: function; argument
443
444 These are the types to which the function call operation (see section
445 :ref:`calls`) can be applied:
446
447 User-defined functions
448 .. index::
449 pair: user-defined; function
450 object: function
451 object: user-defined function
452
453 A user-defined function object is created by a function definition (see
454 section :ref:`function`). It should be called with an argument list
455 containing the same number of items as the function's formal parameter
456 list.
457
458 Special attributes:
459
460 +-------------------------+-------------------------------+-----------+
461 | Attribute | Meaning | |
462 +=========================+===============================+===========+
463 | :attr:`__doc__` | The function's documentation | Writable |
464 | | string, or ``None`` if | |
465 | | unavailable | |
466 +-------------------------+-------------------------------+-----------+
467 | :attr:`__name__` | The function's name | Writable |
468 +-------------------------+-------------------------------+-----------+
469 | :attr:`__module__` | The name of the module the | Writable |
470 | | function was defined in, or | |
471 | | ``None`` if unavailable. | |
472 +-------------------------+-------------------------------+-----------+
473 | :attr:`__defaults__` | A tuple containing default | Writable |
474 | | argument values for those | |
475 | | arguments that have defaults, | |
476 | | or ``None`` if no arguments | |
477 | | have a default value | |
478 +-------------------------+-------------------------------+-----------+
479 | :attr:`__code__` | The code object representing | Writable |
480 | | the compiled function body. | |
481 +-------------------------+-------------------------------+-----------+
482 | :attr:`__globals__` | A reference to the dictionary | Read-only |
483 | | that holds the function's | |
484 | | global variables --- the | |
485 | | global namespace of the | |
486 | | module in which the function | |
487 | | was defined. | |
488 +-------------------------+-------------------------------+-----------+
489 | :attr:`__dict__` | The namespace supporting | Writable |
490 | | arbitrary function | |
491 | | attributes. | |
492 +-------------------------+-------------------------------+-----------+
493 | :attr:`__closure__` | ``None`` or a tuple of cells | Read-only |
494 | | that contain bindings for the | |
495 | | function's free variables. | |
496 +-------------------------+-------------------------------+-----------+
497 | :attr:`__annotations__` | A dict containing annotations | Writable |
498 | | of parameters. The keys of | |
499 | | the dict are the parameter | |
500 | | names, or ``'return'`` for | |
501 | | the return annotation, if | |
502 | | provided. | |
503 +-------------------------+-------------------------------+-----------+
504 | :attr:`__kwdefaults__` | A dict containing defaults | Writable |
505 | | for keyword-only parameters. | |
506 +-------------------------+-------------------------------+-----------+
507
508 Most of the attributes labelled "Writable" check the type of the assigned value.
509
Georg Brandl116aa622007-08-15 14:28:22 +0000510 Function objects also support getting and setting arbitrary attributes, which
511 can be used, for example, to attach metadata to functions. Regular attribute
512 dot-notation is used to get and set such attributes. *Note that the current
513 implementation only supports function attributes on user-defined functions.
514 Function attributes on built-in functions may be supported in the future.*
515
516 Additional information about a function's definition can be retrieved from its
517 code object; see the description of internal types below.
518
519 .. index::
520 single: __doc__ (function attribute)
521 single: __name__ (function attribute)
522 single: __module__ (function attribute)
523 single: __dict__ (function attribute)
524 single: __defaults__ (function attribute)
525 single: __closure__ (function attribute)
526 single: __code__ (function attribute)
527 single: __globals__ (function attribute)
528 single: __annotations__ (function attribute)
529 single: __kwdefaults__ (function attribute)
530 pair: global; namespace
531
532 User-defined methods
533 .. index::
534 object: method
535 object: user-defined method
536 pair: user-defined; method
537
538 A user-defined method object combines a class, a class instance (or ``None``)
539 and any callable object (normally a user-defined function).
540
Christian Heimesff737952007-11-27 10:40:20 +0000541 Special read-only attributes: :attr:`__self__` is the class instance object,
542 :attr:`__func__` is the function object; :attr:`__doc__` is the method's
543 documentation (same as ``__func__.__doc__``); :attr:`__name__` is the
544 method name (same as ``__func__.__name__``); :attr:`__module__` is the
545 name of the module the method was defined in, or ``None`` if unavailable.
Georg Brandl116aa622007-08-15 14:28:22 +0000546
Georg Brandl116aa622007-08-15 14:28:22 +0000547 .. index::
548 single: __doc__ (method attribute)
549 single: __name__ (method attribute)
550 single: __module__ (method attribute)
Christian Heimesff737952007-11-27 10:40:20 +0000551 single: __func__ (method attribute)
552 single: __self__ (method attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000553
554 Methods also support accessing (but not setting) the arbitrary function
555 attributes on the underlying function object.
556
557 User-defined method objects may be created when getting an attribute of a class
558 (perhaps via an instance of that class), if that attribute is a user-defined
559 function object, an unbound user-defined method object, or a class method
560 object. When the attribute is a user-defined method object, a new method object
561 is only created if the class from which it is being retrieved is the same as, or
562 a derived class of, the class stored in the original method object; otherwise,
563 the original method object is used as it is.
564
565 .. index::
Christian Heimesff737952007-11-27 10:40:20 +0000566 single: __func__ (method attribute)
567 single: __self__ (method attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000568
569 When a user-defined method object is created by retrieving a user-defined
Christian Heimesff737952007-11-27 10:40:20 +0000570 function object from a class, its :attr:`__self__` attribute is ``None``
Georg Brandl116aa622007-08-15 14:28:22 +0000571 and the method object is said to be unbound. When one is created by
572 retrieving a user-defined function object from a class via one of its
Christian Heimesff737952007-11-27 10:40:20 +0000573 instances, its :attr:`__self__` attribute is the instance, and the method
574 object is said to be bound. Its :attr:`__func__` attribute is the
575 original function object.
Georg Brandl116aa622007-08-15 14:28:22 +0000576
Christian Heimesff737952007-11-27 10:40:20 +0000577 .. index:: single: __func__ (method attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000578
579 When a user-defined method object is created by retrieving another method object
580 from a class or instance, the behaviour is the same as for a function object,
Christian Heimesff737952007-11-27 10:40:20 +0000581 except that the :attr:`__func__` attribute of the new instance is not the
582 original method object but its :attr:`__func__` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000583
584 .. index::
Christian Heimesff737952007-11-27 10:40:20 +0000585 single: __func__ (method attribute)
586 single: __self__ (method attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000587
588 When a user-defined method object is created by retrieving a class method object
Christian Heimesff737952007-11-27 10:40:20 +0000589 from a class or instance, its :attr:`__self__` attribute is the class itself (the
590 same as the :attr:`im_class` attribute), and its :attr:`__func__` attribute is
Georg Brandl116aa622007-08-15 14:28:22 +0000591 the function object underlying the class method.
592
593 When an unbound user-defined method object is called, the underlying function
Christian Heimesff737952007-11-27 10:40:20 +0000594 (:attr:`__func__`) is called, with the restriction that the first argument must
Georg Brandl116aa622007-08-15 14:28:22 +0000595 be an instance of the proper class (:attr:`im_class`) or of a derived class
596 thereof.
597
598 When a bound user-defined method object is called, the underlying function
Christian Heimesff737952007-11-27 10:40:20 +0000599 (:attr:`__func__`) is called, inserting the class instance (:attr:`__self__`) in
Georg Brandl116aa622007-08-15 14:28:22 +0000600 front of the argument list. For instance, when :class:`C` is a class which
601 contains a definition for a function :meth:`f`, and ``x`` is an instance of
602 :class:`C`, calling ``x.f(1)`` is equivalent to calling ``C.f(x, 1)``.
603
604 When a user-defined method object is derived from a class method object, the
Christian Heimesff737952007-11-27 10:40:20 +0000605 "class instance" stored in :attr:`__self__` will actually be the class itself, so
Georg Brandl116aa622007-08-15 14:28:22 +0000606 that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to calling ``f(C,1)``
607 where ``f`` is the underlying function.
608
609 Note that the transformation from function object to (unbound or bound) method
610 object happens each time the attribute is retrieved from the class or instance.
611 In some cases, a fruitful optimization is to assign the attribute to a local
612 variable and call that local variable. Also notice that this transformation only
613 happens for user-defined functions; other callable objects (and all non-callable
614 objects) are retrieved without transformation. It is also important to note
615 that user-defined functions which are attributes of a class instance are not
616 converted to bound methods; this *only* happens when the function is an
617 attribute of the class.
618
619 Generator functions
620 .. index::
621 single: generator; function
622 single: generator; iterator
623
624 A function or method which uses the :keyword:`yield` statement (see section
625 :ref:`yield`) is called a :dfn:`generator
626 function`. Such a function, when called, always returns an iterator object
627 which can be used to execute the body of the function: calling the iterator's
628 :meth:`__next__` method will cause the function to execute until it provides a
629 value using the :keyword:`yield` statement. When the function executes a
630 :keyword:`return` statement or falls off the end, a :exc:`StopIteration`
631 exception is raised and the iterator will have reached the end of the set of
632 values to be returned.
633
634 Built-in functions
635 .. index::
636 object: built-in function
637 object: function
638 pair: C; language
639
640 A built-in function object is a wrapper around a C function. Examples of
641 built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a
642 standard built-in module). The number and type of the arguments are
643 determined by the C function. Special read-only attributes:
644 :attr:`__doc__` is the function's documentation string, or ``None`` if
645 unavailable; :attr:`__name__` is the function's name; :attr:`__self__` is
646 set to ``None`` (but see the next item); :attr:`__module__` is the name of
647 the module the function was defined in or ``None`` if unavailable.
648
649 Built-in methods
650 .. index::
651 object: built-in method
652 object: method
653 pair: built-in; method
654
655 This is really a different disguise of a built-in function, this time containing
656 an object passed to the C function as an implicit extra argument. An example of
657 a built-in method is ``alist.append()``, assuming *alist* is a list object. In
658 this case, the special read-only attribute :attr:`__self__` is set to the object
659 denoted by *list*.
660
Georg Brandl85eb8c12007-08-31 16:33:38 +0000661 Classes
662 Classes are callable. These objects normally act as factories for new
663 instances of themselves, but variations are possible for class types that
664 override :meth:`__new__`. The arguments of the call are passed to
665 :meth:`__new__` and, in the typical case, to :meth:`__init__` to
666 initialize the new instance.
Georg Brandl116aa622007-08-15 14:28:22 +0000667
Georg Brandl85eb8c12007-08-31 16:33:38 +0000668 Class Instances
669 Instances of arbitrary classes can be made callable by defining a
670 :meth:`__call__` method in their class.
Georg Brandl116aa622007-08-15 14:28:22 +0000671
Georg Brandl116aa622007-08-15 14:28:22 +0000672
673Modules
674 .. index::
675 statement: import
676 object: module
677
678 Modules are imported by the :keyword:`import` statement (see section
679 :ref:`import`). A module object has a
680 namespace implemented by a dictionary object (this is the dictionary referenced
681 by the __globals__ attribute of functions defined in the module). Attribute
682 references are translated to lookups in this dictionary, e.g., ``m.x`` is
683 equivalent to ``m.__dict__["x"]``. A module object does not contain the code
684 object used to initialize the module (since it isn't needed once the
685 initialization is done).
686
687 .. %
688
689 Attribute assignment updates the module's namespace dictionary, e.g., ``m.x =
690 1`` is equivalent to ``m.__dict__["x"] = 1``.
691
692 .. index:: single: __dict__ (module attribute)
693
694 Special read-only attribute: :attr:`__dict__` is the module's namespace as a
695 dictionary object.
696
697 .. index::
698 single: __name__ (module attribute)
699 single: __doc__ (module attribute)
700 single: __file__ (module attribute)
701 pair: module; namespace
702
703 Predefined (writable) attributes: :attr:`__name__` is the module's name;
704 :attr:`__doc__` is the module's documentation string, or ``None`` if
705 unavailable; :attr:`__file__` is the pathname of the file from which the module
706 was loaded, if it was loaded from a file. The :attr:`__file__` attribute is not
707 present for C modules that are statically linked into the interpreter; for
708 extension modules loaded dynamically from a shared library, it is the pathname
709 of the shared library file.
710
Georg Brandl85eb8c12007-08-31 16:33:38 +0000711.. XXX "Classes" and "Instances" is outdated!
712 see http://www.python.org/doc/newstyle.html for newstyle information
713
714Custom classes
Georg Brandl116aa622007-08-15 14:28:22 +0000715 Class objects are created by class definitions (see section :ref:`class`). A
716 class has a namespace implemented by a dictionary object. Class attribute
717 references are translated to lookups in this dictionary, e.g., ``C.x`` is
718 translated to ``C.__dict__["x"]``. When the attribute name is not found
719 there, the attribute search continues in the base classes. The search is
720 depth-first, left-to-right in the order of occurrence in the base class list.
721
Georg Brandl85eb8c12007-08-31 16:33:38 +0000722 .. XXX document descriptors and new MRO
723
Georg Brandl116aa622007-08-15 14:28:22 +0000724 .. index::
725 object: class
726 object: class instance
727 object: instance
728 pair: class object; call
729 single: container
730 object: dictionary
731 pair: class; attribute
732
733 When a class attribute reference (for class :class:`C`, say) would yield a
734 user-defined function object or an unbound user-defined method object whose
735 associated class is either :class:`C` or one of its base classes, it is
736 transformed into an unbound user-defined method object whose :attr:`im_class`
737 attribute is :class:`C`. When it would yield a class method object, it is
738 transformed into a bound user-defined method object whose :attr:`im_class`
Christian Heimesff737952007-11-27 10:40:20 +0000739 and :attr:`__self__` attributes are both :class:`C`. When it would yield a
Georg Brandl116aa622007-08-15 14:28:22 +0000740 static method object, it is transformed into the object wrapped by the static
741 method object. See section :ref:`descriptors` for another way in which
742 attributes retrieved from a class may differ from those actually contained in
743 its :attr:`__dict__`.
744
745 .. index:: triple: class; attribute; assignment
746
747 Class attribute assignments update the class's dictionary, never the dictionary
748 of a base class.
749
750 .. index:: pair: class object; call
751
752 A class object can be called (see above) to yield a class instance (see below).
753
754 .. index::
755 single: __name__ (class attribute)
756 single: __module__ (class attribute)
757 single: __dict__ (class attribute)
758 single: __bases__ (class attribute)
759 single: __doc__ (class attribute)
760
761 Special attributes: :attr:`__name__` is the class name; :attr:`__module__` is
762 the module name in which the class was defined; :attr:`__dict__` is the
763 dictionary containing the class's namespace; :attr:`__bases__` is a tuple
764 (possibly empty or a singleton) containing the base classes, in the order of
765 their occurrence in the base class list; :attr:`__doc__` is the class's
766 documentation string, or None if undefined.
767
768Class instances
769 .. index::
770 object: class instance
771 object: instance
772 pair: class; instance
773 pair: class instance; attribute
774
775 A class instance is created by calling a class object (see above). A class
776 instance has a namespace implemented as a dictionary which is the first place in
777 which attribute references are searched. When an attribute is not found there,
778 and the instance's class has an attribute by that name, the search continues
779 with the class attributes. If a class attribute is found that is a user-defined
780 function object or an unbound user-defined method object whose associated class
781 is the class (call it :class:`C`) of the instance for which the attribute
782 reference was initiated or one of its bases, it is transformed into a bound
783 user-defined method object whose :attr:`im_class` attribute is :class:`C` and
Christian Heimesff737952007-11-27 10:40:20 +0000784 whose :attr:`__self__` attribute is the instance. Static method and class method
Georg Brandl116aa622007-08-15 14:28:22 +0000785 objects are also transformed, as if they had been retrieved from class
786 :class:`C`; see above under "Classes". See section :ref:`descriptors` for
787 another way in which attributes of a class retrieved via its instances may
788 differ from the objects actually stored in the class's :attr:`__dict__`. If no
789 class attribute is found, and the object's class has a :meth:`__getattr__`
790 method, that is called to satisfy the lookup.
791
792 .. index:: triple: class instance; attribute; assignment
793
794 Attribute assignments and deletions update the instance's dictionary, never a
795 class's dictionary. If the class has a :meth:`__setattr__` or
796 :meth:`__delattr__` method, this is called instead of updating the instance
797 dictionary directly.
798
799 .. index::
800 object: numeric
801 object: sequence
802 object: mapping
803
804 Class instances can pretend to be numbers, sequences, or mappings if they have
805 methods with certain special names. See section :ref:`specialnames`.
806
807 .. index::
808 single: __dict__ (instance attribute)
809 single: __class__ (instance attribute)
810
811 Special attributes: :attr:`__dict__` is the attribute dictionary;
812 :attr:`__class__` is the instance's class.
813
814Files
815 .. index::
816 object: file
817 builtin: open
818 single: popen() (in module os)
819 single: makefile() (socket method)
820 single: sys.stdin
821 single: sys.stdout
822 single: sys.stderr
823 single: stdio
824 single: stdin (in module sys)
825 single: stdout (in module sys)
826 single: stderr (in module sys)
827
828 A file object represents an open file. File objects are created by the
829 :func:`open` built-in function, and also by :func:`os.popen`,
830 :func:`os.fdopen`, and the :meth:`makefile` method of socket objects (and
831 perhaps by other functions or methods provided by extension modules). The
832 objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are initialized to
833 file objects corresponding to the interpreter's standard input, output and
834 error streams. See :ref:`bltin-file-objects` for complete documentation of
835 file objects.
836
837Internal types
838 .. index::
839 single: internal type
840 single: types, internal
841
842 A few types used internally by the interpreter are exposed to the user. Their
843 definitions may change with future versions of the interpreter, but they are
844 mentioned here for completeness.
845
846 Code objects
847 .. index::
848 single: bytecode
849 object: code
850
Georg Brandl9afde1c2007-11-01 20:32:30 +0000851 Code objects represent *byte-compiled* executable Python code, or :term:`bytecode`.
Georg Brandl116aa622007-08-15 14:28:22 +0000852 The difference between a code object and a function object is that the function
853 object contains an explicit reference to the function's globals (the module in
854 which it was defined), while a code object contains no context; also the default
855 argument values are stored in the function object, not in the code object
856 (because they represent values calculated at run-time). Unlike function
857 objects, code objects are immutable and contain no references (directly or
858 indirectly) to mutable objects.
859
860 Special read-only attributes: :attr:`co_name` gives the function name;
861 :attr:`co_argcount` is the number of positional arguments (including arguments
862 with default values); :attr:`co_nlocals` is the number of local variables used
863 by the function (including arguments); :attr:`co_varnames` is a tuple containing
864 the names of the local variables (starting with the argument names);
865 :attr:`co_cellvars` is a tuple containing the names of local variables that are
866 referenced by nested functions; :attr:`co_freevars` is a tuple containing the
867 names of free variables; :attr:`co_code` is a string representing the sequence
868 of bytecode instructions; :attr:`co_consts` is a tuple containing the literals
869 used by the bytecode; :attr:`co_names` is a tuple containing the names used by
870 the bytecode; :attr:`co_filename` is the filename from which the code was
871 compiled; :attr:`co_firstlineno` is the first line number of the function;
Georg Brandl9afde1c2007-11-01 20:32:30 +0000872 :attr:`co_lnotab` is a string encoding the mapping from bytecode offsets to
Georg Brandl116aa622007-08-15 14:28:22 +0000873 line numbers (for details see the source code of the interpreter);
874 :attr:`co_stacksize` is the required stack size (including local variables);
875 :attr:`co_flags` is an integer encoding a number of flags for the interpreter.
876
877 .. index::
878 single: co_argcount (code object attribute)
879 single: co_code (code object attribute)
880 single: co_consts (code object attribute)
881 single: co_filename (code object attribute)
882 single: co_firstlineno (code object attribute)
883 single: co_flags (code object attribute)
884 single: co_lnotab (code object attribute)
885 single: co_name (code object attribute)
886 single: co_names (code object attribute)
887 single: co_nlocals (code object attribute)
888 single: co_stacksize (code object attribute)
889 single: co_varnames (code object attribute)
890 single: co_cellvars (code object attribute)
891 single: co_freevars (code object attribute)
892
893 .. index:: object: generator
894
895 The following flag bits are defined for :attr:`co_flags`: bit ``0x04`` is set if
896 the function uses the ``*arguments`` syntax to accept an arbitrary number of
897 positional arguments; bit ``0x08`` is set if the function uses the
898 ``**keywords`` syntax to accept arbitrary keyword arguments; bit ``0x20`` is set
899 if the function is a generator.
900
901 Future feature declarations (``from __future__ import division``) also use bits
902 in :attr:`co_flags` to indicate whether a code object was compiled with a
903 particular feature enabled: bit ``0x2000`` is set if the function was compiled
904 with future division enabled; bits ``0x10`` and ``0x1000`` were used in earlier
905 versions of Python.
906
907 Other bits in :attr:`co_flags` are reserved for internal use.
908
909 .. index:: single: documentation string
910
911 If a code object represents a function, the first item in :attr:`co_consts` is
912 the documentation string of the function, or ``None`` if undefined.
913
914 Frame objects
915 .. index:: object: frame
916
917 Frame objects represent execution frames. They may occur in traceback objects
918 (see below).
919
920 .. index::
921 single: f_back (frame attribute)
922 single: f_code (frame attribute)
923 single: f_globals (frame attribute)
924 single: f_locals (frame attribute)
925 single: f_lasti (frame attribute)
926 single: f_builtins (frame attribute)
927
928 Special read-only attributes: :attr:`f_back` is to the previous stack frame
929 (towards the caller), or ``None`` if this is the bottom stack frame;
930 :attr:`f_code` is the code object being executed in this frame; :attr:`f_locals`
931 is the dictionary used to look up local variables; :attr:`f_globals` is used for
932 global variables; :attr:`f_builtins` is used for built-in (intrinsic) names;
933 :attr:`f_lasti` gives the precise instruction (this is an index into the
934 bytecode string of the code object).
935
936 .. index::
937 single: f_trace (frame attribute)
938 single: f_exc_type (frame attribute)
939 single: f_exc_value (frame attribute)
940 single: f_exc_traceback (frame attribute)
941 single: f_lineno (frame attribute)
942
943 Special writable attributes: :attr:`f_trace`, if not ``None``, is a function
944 called at the start of each source code line (this is used by the debugger);
945 :attr:`f_exc_type`, :attr:`f_exc_value`, :attr:`f_exc_traceback` represent the
946 last exception raised in the parent frame provided another exception was ever
947 raised in the current frame (in all other cases they are None); :attr:`f_lineno`
948 is the current line number of the frame --- writing to this from within a trace
949 function jumps to the given line (only for the bottom-most frame). A debugger
950 can implement a Jump command (aka Set Next Statement) by writing to f_lineno.
951
952 Traceback objects
953 .. index::
954 object: traceback
955 pair: stack; trace
956 pair: exception; handler
957 pair: execution; stack
958 single: exc_info (in module sys)
959 single: exc_traceback (in module sys)
960 single: last_traceback (in module sys)
961 single: sys.exc_info
962 single: sys.last_traceback
963
964 Traceback objects represent a stack trace of an exception. A traceback object
965 is created when an exception occurs. When the search for an exception handler
966 unwinds the execution stack, at each unwound level a traceback object is
967 inserted in front of the current traceback. When an exception handler is
968 entered, the stack trace is made available to the program. (See section
969 :ref:`try`.) It is accessible as the third item of the
970 tuple returned by ``sys.exc_info()``. When the program contains no suitable
971 handler, the stack trace is written (nicely formatted) to the standard error
972 stream; if the interpreter is interactive, it is also made available to the user
973 as ``sys.last_traceback``.
974
975 .. index::
976 single: tb_next (traceback attribute)
977 single: tb_frame (traceback attribute)
978 single: tb_lineno (traceback attribute)
979 single: tb_lasti (traceback attribute)
980 statement: try
981
982 Special read-only attributes: :attr:`tb_next` is the next level in the stack
983 trace (towards the frame where the exception occurred), or ``None`` if there is
984 no next level; :attr:`tb_frame` points to the execution frame of the current
985 level; :attr:`tb_lineno` gives the line number where the exception occurred;
986 :attr:`tb_lasti` indicates the precise instruction. The line number and last
987 instruction in the traceback may differ from the line number of its frame object
988 if the exception occurred in a :keyword:`try` statement with no matching except
989 clause or with a finally clause.
990
991 Slice objects
992 .. index:: builtin: slice
993
Georg Brandlcb8ecb12007-09-04 06:35:14 +0000994 Slice objects are used to represent slices for :meth:`__getitem__`
995 methods. They are also created by the built-in :func:`slice` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000996
997 .. index::
998 single: start (slice object attribute)
999 single: stop (slice object attribute)
1000 single: step (slice object attribute)
1001
1002 Special read-only attributes: :attr:`start` is the lower bound; :attr:`stop` is
1003 the upper bound; :attr:`step` is the step value; each is ``None`` if omitted.
1004 These attributes can have any type.
1005
1006 Slice objects support one method:
1007
Georg Brandl116aa622007-08-15 14:28:22 +00001008 .. method:: slice.indices(self, length)
1009
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001010 This method takes a single integer argument *length* and computes
1011 information about the slice that the slice object would describe if
1012 applied to a sequence of *length* items. It returns a tuple of three
1013 integers; respectively these are the *start* and *stop* indices and the
1014 *step* or stride length of the slice. Missing or out-of-bounds indices
1015 are handled in a manner consistent with regular slices.
Georg Brandl116aa622007-08-15 14:28:22 +00001016
Georg Brandl116aa622007-08-15 14:28:22 +00001017 Static method objects
1018 Static method objects provide a way of defeating the transformation of function
1019 objects to method objects described above. A static method object is a wrapper
1020 around any other object, usually a user-defined method object. When a static
1021 method object is retrieved from a class or a class instance, the object actually
1022 returned is the wrapped object, which is not subject to any further
1023 transformation. Static method objects are not themselves callable, although the
1024 objects they wrap usually are. Static method objects are created by the built-in
1025 :func:`staticmethod` constructor.
1026
1027 Class method objects
1028 A class method object, like a static method object, is a wrapper around another
1029 object that alters the way in which that object is retrieved from classes and
1030 class instances. The behaviour of class method objects upon such retrieval is
1031 described above, under "User-defined methods". Class method objects are created
1032 by the built-in :func:`classmethod` constructor.
1033
1034 .. % Internal types
1035
Georg Brandl116aa622007-08-15 14:28:22 +00001036.. % =========================================================================
1037
Georg Brandl9afde1c2007-11-01 20:32:30 +00001038.. _newstyle:
Georg Brandl116aa622007-08-15 14:28:22 +00001039
1040.. _specialnames:
1041
1042Special method names
1043====================
1044
1045.. index::
1046 pair: operator; overloading
1047 single: __getitem__() (mapping object method)
1048
1049A class can implement certain operations that are invoked by special syntax
1050(such as arithmetic operations or subscripting and slicing) by defining methods
1051with special names. This is Python's approach to :dfn:`operator overloading`,
1052allowing classes to define their own behavior with respect to language
1053operators. For instance, if a class defines a method named :meth:`__getitem__`,
Georg Brandl85eb8c12007-08-31 16:33:38 +00001054and ``x`` is an instance of this class, then ``x[i]`` is equivalent to
Georg Brandl116aa622007-08-15 14:28:22 +00001055``x.__getitem__(i)``. Except where mentioned, attempts to execute an operation
1056raise an exception when no appropriate method is defined.
1057
Georg Brandl85eb8c12007-08-31 16:33:38 +00001058.. XXX above translation is not correct for new-style classes!
1059
Georg Brandl65ea9bd2007-09-05 13:36:27 +00001060Special methods are only guaranteed to work if defined in an object's class, not
1061in the object's instance dictionary. That explains why this won't work::
1062
1063 >>> class C:
1064 ... pass
1065 ...
1066 >>> c = C()
1067 >>> c.__len__ = lambda: 5
1068 >>> len(c)
1069 Traceback (most recent call last):
1070 File "<stdin>", line 1, in <module>
1071 TypeError: object of type 'C' has no len()
1072
1073
Georg Brandl116aa622007-08-15 14:28:22 +00001074When implementing a class that emulates any built-in type, it is important that
1075the emulation only be implemented to the degree that it makes sense for the
1076object being modelled. For example, some sequences may work well with retrieval
1077of individual elements, but extracting a slice may not make sense. (One example
1078of this is the :class:`NodeList` interface in the W3C's Document Object Model.)
1079
1080
1081.. _customization:
1082
1083Basic customization
1084-------------------
1085
1086
1087.. method:: object.__new__(cls[, ...])
1088
1089 Called to create a new instance of class *cls*. :meth:`__new__` is a static
1090 method (special-cased so you need not declare it as such) that takes the class
1091 of which an instance was requested as its first argument. The remaining
1092 arguments are those passed to the object constructor expression (the call to the
1093 class). The return value of :meth:`__new__` should be the new object instance
1094 (usually an instance of *cls*).
1095
1096 Typical implementations create a new instance of the class by invoking the
1097 superclass's :meth:`__new__` method using ``super(currentclass,
1098 cls).__new__(cls[, ...])`` with appropriate arguments and then modifying the
1099 newly-created instance as necessary before returning it.
1100
1101 If :meth:`__new__` returns an instance of *cls*, then the new instance's
1102 :meth:`__init__` method will be invoked like ``__init__(self[, ...])``, where
1103 *self* is the new instance and the remaining arguments are the same as were
1104 passed to :meth:`__new__`.
1105
1106 If :meth:`__new__` does not return an instance of *cls*, then the new instance's
1107 :meth:`__init__` method will not be invoked.
1108
1109 :meth:`__new__` is intended mainly to allow subclasses of immutable types (like
1110 int, str, or tuple) to customize instance creation.
1111
1112
1113.. method:: object.__init__(self[, ...])
1114
1115 .. index:: pair: class; constructor
1116
1117 Called when the instance is created. The arguments are those passed to the
1118 class constructor expression. If a base class has an :meth:`__init__` method,
1119 the derived class's :meth:`__init__` method, if any, must explicitly call it to
1120 ensure proper initialization of the base class part of the instance; for
1121 example: ``BaseClass.__init__(self, [args...])``. As a special constraint on
1122 constructors, no value may be returned; doing so will cause a :exc:`TypeError`
1123 to be raised at runtime.
1124
1125
1126.. method:: object.__del__(self)
1127
1128 .. index::
1129 single: destructor
1130 statement: del
1131
1132 Called when the instance is about to be destroyed. This is also called a
1133 destructor. If a base class has a :meth:`__del__` method, the derived class's
1134 :meth:`__del__` method, if any, must explicitly call it to ensure proper
1135 deletion of the base class part of the instance. Note that it is possible
1136 (though not recommended!) for the :meth:`__del__` method to postpone destruction
1137 of the instance by creating a new reference to it. It may then be called at a
1138 later time when this new reference is deleted. It is not guaranteed that
1139 :meth:`__del__` methods are called for objects that still exist when the
1140 interpreter exits.
1141
1142 .. note::
1143
1144 ``del x`` doesn't directly call ``x.__del__()`` --- the former decrements
1145 the reference count for ``x`` by one, and the latter is only called when
1146 ``x``'s reference count reaches zero. Some common situations that may
1147 prevent the reference count of an object from going to zero include:
1148 circular references between objects (e.g., a doubly-linked list or a tree
1149 data structure with parent and child pointers); a reference to the object
1150 on the stack frame of a function that caught an exception (the traceback
1151 stored in ``sys.exc_info()[2]`` keeps the stack frame alive); or a
1152 reference to the object on the stack frame that raised an unhandled
1153 exception in interactive mode (the traceback stored in
1154 ``sys.last_traceback`` keeps the stack frame alive). The first situation
1155 can only be remedied by explicitly breaking the cycles; the latter two
1156 situations can be resolved by storing ``None`` in ``sys.last_traceback``.
1157 Circular references which are garbage are detected when the option cycle
1158 detector is enabled (it's on by default), but can only be cleaned up if
1159 there are no Python- level :meth:`__del__` methods involved. Refer to the
1160 documentation for the :mod:`gc` module for more information about how
1161 :meth:`__del__` methods are handled by the cycle detector, particularly
1162 the description of the ``garbage`` value.
1163
1164 .. warning::
1165
1166 Due to the precarious circumstances under which :meth:`__del__` methods are
1167 invoked, exceptions that occur during their execution are ignored, and a warning
1168 is printed to ``sys.stderr`` instead. Also, when :meth:`__del__` is invoked in
1169 response to a module being deleted (e.g., when execution of the program is
1170 done), other globals referenced by the :meth:`__del__` method may already have
1171 been deleted. For this reason, :meth:`__del__` methods should do the absolute
1172 minimum needed to maintain external invariants. Starting with version 1.5,
1173 Python guarantees that globals whose name begins with a single underscore are
1174 deleted from their module before other globals are deleted; if no other
1175 references to such globals exist, this may help in assuring that imported
1176 modules are still available at the time when the :meth:`__del__` method is
1177 called.
1178
1179
1180.. method:: object.__repr__(self)
1181
1182 .. index:: builtin: repr
1183
1184 Called by the :func:`repr` built-in function and by string conversions (reverse
1185 quotes) to compute the "official" string representation of an object. If at all
1186 possible, this should look like a valid Python expression that could be used to
1187 recreate an object with the same value (given an appropriate environment). If
1188 this is not possible, a string of the form ``<...some useful description...>``
1189 should be returned. The return value must be a string object. If a class
1190 defines :meth:`__repr__` but not :meth:`__str__`, then :meth:`__repr__` is also
1191 used when an "informal" string representation of instances of that class is
1192 required.
1193
Georg Brandl116aa622007-08-15 14:28:22 +00001194 This is typically used for debugging, so it is important that the representation
1195 is information-rich and unambiguous.
1196
1197
1198.. method:: object.__str__(self)
1199
1200 .. index::
1201 builtin: str
Georg Brandl4b491312007-08-31 09:22:56 +00001202 builtin: print
Georg Brandl116aa622007-08-15 14:28:22 +00001203
Georg Brandldcc56f82007-08-31 16:41:12 +00001204 Called by the :func:`str` built-in function and by the :func:`print` function
1205 to compute the "informal" string representation of an object. This differs
1206 from :meth:`__repr__` in that it does not have to be a valid Python
Georg Brandl116aa622007-08-15 14:28:22 +00001207 expression: a more convenient or concise representation may be used instead.
1208 The return value must be a string object.
1209
Georg Brandldcc56f82007-08-31 16:41:12 +00001210 .. XXX what about subclasses of string?
1211
Georg Brandl116aa622007-08-15 14:28:22 +00001212
Georg Brandl4b491312007-08-31 09:22:56 +00001213.. method:: object.__format__(self, format_spec)
1214
1215 .. index::
1216 pair: string; conversion
1217 builtin: str
1218 builtin: print
1219
1220 Called by the :func:`format` built-in function (and by extension, the
1221 :meth:`format` method of class :class:`str`) to produce a "formatted"
1222 string representation of an object. The ``format_spec`` argument is
1223 a string that contains a description of the formatting options desired.
1224 The interpretation of the ``format_spec`` argument is up to the type
1225 implementing :meth:`__format__`, however most classes will either
1226 delegate formatting to one of the built-in types, or use a similar
1227 formatting option syntax.
1228
1229 See :ref:`formatspec` for a description of the standard formatting syntax.
1230
1231 The return value must be a string object.
1232
1233
Georg Brandl116aa622007-08-15 14:28:22 +00001234.. method:: object.__lt__(self, other)
1235 object.__le__(self, other)
1236 object.__eq__(self, other)
1237 object.__ne__(self, other)
1238 object.__gt__(self, other)
1239 object.__ge__(self, other)
1240
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001241 .. index::
1242 single: comparisons
1243
Georg Brandl116aa622007-08-15 14:28:22 +00001244 These are the so-called "rich comparison" methods, and are called for comparison
1245 operators in preference to :meth:`__cmp__` below. The correspondence between
1246 operator symbols and method names is as follows: ``x<y`` calls ``x.__lt__(y)``,
1247 ``x<=y`` calls ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` calls
1248 ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` calls
1249 ``x.__ge__(y)``.
1250
1251 A rich comparison method may return the singleton ``NotImplemented`` if it does
1252 not implement the operation for a given pair of arguments. By convention,
1253 ``False`` and ``True`` are returned for a successful comparison. However, these
1254 methods can return any value, so if the comparison operator is used in a Boolean
1255 context (e.g., in the condition of an ``if`` statement), Python will call
1256 :func:`bool` on the value to determine if the result is true or false.
1257
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001258 There are no implied relationships among the comparison operators. The truth
1259 of ``x==y`` does not imply that ``x!=y`` is false. Accordingly, when
1260 defining :meth:`__eq__`, one should also define :meth:`__ne__` so that the
1261 operators will behave as expected. See the paragraph on :meth:`__hash__` for
1262 some important notes on creating :term:`hashable` objects which support
1263 custom comparison operations and are usable as dictionary keys.
Georg Brandl116aa622007-08-15 14:28:22 +00001264
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001265 There are no swapped-argument versions of these methods (to be used when the
1266 left argument does not support the operation but the right argument does);
1267 rather, :meth:`__lt__` and :meth:`__gt__` are each other's reflection,
Georg Brandl116aa622007-08-15 14:28:22 +00001268 :meth:`__le__` and :meth:`__ge__` are each other's reflection, and
1269 :meth:`__eq__` and :meth:`__ne__` are their own reflection.
1270
1271 Arguments to rich comparison methods are never coerced.
1272
1273
1274.. method:: object.__cmp__(self, other)
1275
1276 .. index::
1277 builtin: cmp
1278 single: comparisons
1279
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001280 Called by comparison operations if rich comparison (see above) is not
1281 defined. Should return a negative integer if ``self < other``, zero if
1282 ``self == other``, a positive integer if ``self > other``. If no
1283 :meth:`__cmp__`, :meth:`__eq__` or :meth:`__ne__` operation is defined, class
1284 instances are compared by object identity ("address"). See also the
1285 description of :meth:`__hash__` for some important notes on creating
1286 :term:`hashable` objects which support custom comparison operations and are
Georg Brandldb629672007-11-03 08:44:43 +00001287 usable as dictionary keys.
Georg Brandl116aa622007-08-15 14:28:22 +00001288
1289
Georg Brandl116aa622007-08-15 14:28:22 +00001290.. method:: object.__hash__(self)
1291
1292 .. index::
1293 object: dictionary
1294 builtin: hash
Georg Brandl16174572007-09-01 12:38:06 +00001295 single: __cmp__() (object method)
Georg Brandl116aa622007-08-15 14:28:22 +00001296
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001297 Called for the key object for dictionary operations, and by the built-in
1298 function :func:`hash`. Should return an integer usable as a hash value
Georg Brandl116aa622007-08-15 14:28:22 +00001299 for dictionary operations. The only required property is that objects which
1300 compare equal have the same hash value; it is advised to somehow mix together
1301 (e.g., using exclusive or) the hash values for the components of the object that
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001302 also play a part in comparison of objects.
Georg Brandl116aa622007-08-15 14:28:22 +00001303
Georg Brandldb629672007-11-03 08:44:43 +00001304 If a class does not define a :meth:`__cmp__` or :meth:`__eq__` method it
1305 should not define a :meth:`__hash__` operation either; if it defines
1306 :meth:`__cmp__` or :meth:`__eq__` but not :meth:`__hash__`, its instances
1307 will not be usable as dictionary keys. If a class defines mutable objects
1308 and implements a :meth:`__cmp__` or :meth:`__eq__` method, it should not
1309 implement :meth:`__hash__`, since the dictionary implementation requires that
1310 a key's hash value is immutable (if the object's hash value changes, it will
1311 be in the wrong hash bucket).
1312
1313 User-defined classes have :meth:`__cmp__` and :meth:`__hash__` methods
1314 by default; with them, all objects compare unequal and ``x.__hash__()``
1315 returns ``id(x)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001316
1317
1318.. method:: object.__bool__(self)
1319
1320 .. index:: single: __len__() (mapping object method)
1321
1322 Called to implement truth value testing, and the built-in operation ``bool()``;
1323 should return ``False`` or ``True``. When this method is not defined,
1324 :meth:`__len__` is called, if it is defined (see below) and ``True`` is returned
1325 when the length is not zero. If a class defines neither :meth:`__len__` nor
1326 :meth:`__bool__`, all its instances are considered true.
1327
1328
Georg Brandl116aa622007-08-15 14:28:22 +00001329.. _attribute-access:
1330
1331Customizing attribute access
1332----------------------------
1333
1334The following methods can be defined to customize the meaning of attribute
1335access (use of, assignment to, or deletion of ``x.name``) for class instances.
1336
Georg Brandl85eb8c12007-08-31 16:33:38 +00001337.. XXX explain how descriptors interfere here!
1338
Georg Brandl116aa622007-08-15 14:28:22 +00001339
1340.. method:: object.__getattr__(self, name)
1341
1342 Called when an attribute lookup has not found the attribute in the usual places
1343 (i.e. it is not an instance attribute nor is it found in the class tree for
1344 ``self``). ``name`` is the attribute name. This method should return the
1345 (computed) attribute value or raise an :exc:`AttributeError` exception.
1346
Georg Brandl116aa622007-08-15 14:28:22 +00001347 Note that if the attribute is found through the normal mechanism,
1348 :meth:`__getattr__` is not called. (This is an intentional asymmetry between
1349 :meth:`__getattr__` and :meth:`__setattr__`.) This is done both for efficiency
1350 reasons and because otherwise :meth:`__setattr__` would have no way to access
1351 other attributes of the instance. Note that at least for instance variables,
1352 you can fake total control by not inserting any values in the instance attribute
1353 dictionary (but instead inserting them in another object). See the
Georg Brandl85eb8c12007-08-31 16:33:38 +00001354 :meth:`__getattribute__` method below for a way to actually get total control
1355 over attribute access.
Georg Brandl116aa622007-08-15 14:28:22 +00001356
1357
1358.. method:: object.__getattribute__(self, name)
1359
1360 Called unconditionally to implement attribute accesses for instances of the
1361 class. If the class also defines :meth:`__getattr__`, the latter will not be
1362 called unless :meth:`__getattribute__` either calls it explicitly or raises an
1363 :exc:`AttributeError`. This method should return the (computed) attribute value
1364 or raise an :exc:`AttributeError` exception. In order to avoid infinite
1365 recursion in this method, its implementation should always call the base class
1366 method with the same name to access any attributes it needs, for example,
1367 ``object.__getattribute__(self, name)``.
1368
1369
Georg Brandl85eb8c12007-08-31 16:33:38 +00001370.. method:: object.__setattr__(self, name, value)
1371
1372 Called when an attribute assignment is attempted. This is called instead of
1373 the normal mechanism (i.e. store the value in the instance dictionary).
1374 *name* is the attribute name, *value* is the value to be assigned to it.
1375
1376 If :meth:`__setattr__` wants to assign to an instance attribute, it should
1377 call the base class method with the same name, for example,
1378 ``object.__setattr__(self, name, value)``.
1379
1380
1381.. method:: object.__delattr__(self, name)
1382
1383 Like :meth:`__setattr__` but for attribute deletion instead of assignment. This
1384 should only be implemented if ``del obj.name`` is meaningful for the object.
1385
1386
Georg Brandl116aa622007-08-15 14:28:22 +00001387.. _descriptors:
1388
1389Implementing Descriptors
1390^^^^^^^^^^^^^^^^^^^^^^^^
1391
1392The following methods only apply when an instance of the class containing the
1393method (a so-called *descriptor* class) appears in the class dictionary of
Georg Brandl85eb8c12007-08-31 16:33:38 +00001394another class, known as the *owner* class. In the examples below, "the
Georg Brandl116aa622007-08-15 14:28:22 +00001395attribute" refers to the attribute whose name is the key of the property in the
Georg Brandl85eb8c12007-08-31 16:33:38 +00001396owner class' :attr:`__dict__`.
Georg Brandl116aa622007-08-15 14:28:22 +00001397
1398
1399.. method:: object.__get__(self, instance, owner)
1400
1401 Called to get the attribute of the owner class (class attribute access) or of an
1402 instance of that class (instance attribute access). *owner* is always the owner
1403 class, while *instance* is the instance that the attribute was accessed through,
1404 or ``None`` when the attribute is accessed through the *owner*. This method
1405 should return the (computed) attribute value or raise an :exc:`AttributeError`
1406 exception.
1407
1408
1409.. method:: object.__set__(self, instance, value)
1410
1411 Called to set the attribute on an instance *instance* of the owner class to a
1412 new value, *value*.
1413
1414
1415.. method:: object.__delete__(self, instance)
1416
1417 Called to delete the attribute on an instance *instance* of the owner class.
1418
1419
1420.. _descriptor-invocation:
1421
1422Invoking Descriptors
1423^^^^^^^^^^^^^^^^^^^^
1424
1425In general, a descriptor is an object attribute with "binding behavior", one
1426whose attribute access has been overridden by methods in the descriptor
1427protocol: :meth:`__get__`, :meth:`__set__`, and :meth:`__delete__`. If any of
1428those methods are defined for an object, it is said to be a descriptor.
1429
1430The default behavior for attribute access is to get, set, or delete the
1431attribute from an object's dictionary. For instance, ``a.x`` has a lookup chain
1432starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and
1433continuing through the base classes of ``type(a)`` excluding metaclasses.
1434
1435However, if the looked-up value is an object defining one of the descriptor
1436methods, then Python may override the default behavior and invoke the descriptor
1437method instead. Where this occurs in the precedence chain depends on which
1438descriptor methods were defined and how they were called. Note that descriptors
1439are only invoked for new style objects or classes (ones that subclass
1440:class:`object()` or :class:`type()`).
1441
1442The starting point for descriptor invocation is a binding, ``a.x``. How the
1443arguments are assembled depends on ``a``:
1444
1445Direct Call
1446 The simplest and least common call is when user code directly invokes a
1447 descriptor method: ``x.__get__(a)``.
1448
1449Instance Binding
Georg Brandl85eb8c12007-08-31 16:33:38 +00001450 If binding to an object instance, ``a.x`` is transformed into the call:
Georg Brandl116aa622007-08-15 14:28:22 +00001451 ``type(a).__dict__['x'].__get__(a, type(a))``.
1452
1453Class Binding
Georg Brandl85eb8c12007-08-31 16:33:38 +00001454 If binding to a class, ``A.x`` is transformed into the call:
Georg Brandl116aa622007-08-15 14:28:22 +00001455 ``A.__dict__['x'].__get__(None, A)``.
1456
1457Super Binding
1458 If ``a`` is an instance of :class:`super`, then the binding ``super(B,
1459 obj).m()`` searches ``obj.__class__.__mro__`` for the base class ``A``
1460 immediately preceding ``B`` and then invokes the descriptor with the call:
1461 ``A.__dict__['m'].__get__(obj, A)``.
1462
1463For instance bindings, the precedence of descriptor invocation depends on the
Guido van Rossum04110fb2007-08-24 16:32:05 +00001464which descriptor methods are defined. Normally, data descriptors define both
1465:meth:`__get__` and :meth:`__set__`, while non-data descriptors have just the
Georg Brandl116aa622007-08-15 14:28:22 +00001466:meth:`__get__` method. Data descriptors always override a redefinition in an
1467instance dictionary. In contrast, non-data descriptors can be overridden by
Guido van Rossum04110fb2007-08-24 16:32:05 +00001468instances. [#]_
Georg Brandl116aa622007-08-15 14:28:22 +00001469
1470Python methods (including :func:`staticmethod` and :func:`classmethod`) are
1471implemented as non-data descriptors. Accordingly, instances can redefine and
1472override methods. This allows individual instances to acquire behaviors that
1473differ from other instances of the same class.
1474
1475The :func:`property` function is implemented as a data descriptor. Accordingly,
1476instances cannot override the behavior of a property.
1477
1478
1479.. _slots:
1480
1481__slots__
1482^^^^^^^^^
1483
Georg Brandl85eb8c12007-08-31 16:33:38 +00001484By default, instances of classes have a dictionary for attribute storage. This
1485wastes space for objects having very few instance variables. The space
1486consumption can become acute when creating large numbers of instances.
Georg Brandl116aa622007-08-15 14:28:22 +00001487
Georg Brandl85eb8c12007-08-31 16:33:38 +00001488The default can be overridden by defining *__slots__* in a class definition.
1489The *__slots__* declaration takes a sequence of instance variables and reserves
1490just enough space in each instance to hold a value for each variable. Space is
1491saved because *__dict__* is not created for each instance.
Georg Brandl116aa622007-08-15 14:28:22 +00001492
1493
Georg Brandl85eb8c12007-08-31 16:33:38 +00001494.. data:: object.__slots__
Georg Brandl116aa622007-08-15 14:28:22 +00001495
Georg Brandl85eb8c12007-08-31 16:33:38 +00001496 This class variable can be assigned a string, iterable, or sequence of
1497 strings with variable names used by instances. If defined in a new-style
1498 class, *__slots__* reserves space for the declared variables and prevents the
1499 automatic creation of *__dict__* and *__weakref__* for each instance.
Georg Brandl116aa622007-08-15 14:28:22 +00001500
Georg Brandl116aa622007-08-15 14:28:22 +00001501
1502Notes on using *__slots__*
Georg Brandl16174572007-09-01 12:38:06 +00001503""""""""""""""""""""""""""
Georg Brandl116aa622007-08-15 14:28:22 +00001504
1505* Without a *__dict__* variable, instances cannot be assigned new variables not
1506 listed in the *__slots__* definition. Attempts to assign to an unlisted
1507 variable name raises :exc:`AttributeError`. If dynamic assignment of new
Georg Brandl85eb8c12007-08-31 16:33:38 +00001508 variables is desired, then add ``'__dict__'`` to the sequence of strings in
1509 the *__slots__* declaration.
Georg Brandl116aa622007-08-15 14:28:22 +00001510
Georg Brandl116aa622007-08-15 14:28:22 +00001511* Without a *__weakref__* variable for each instance, classes defining
1512 *__slots__* do not support weak references to its instances. If weak reference
1513 support is needed, then add ``'__weakref__'`` to the sequence of strings in the
1514 *__slots__* declaration.
1515
Georg Brandl116aa622007-08-15 14:28:22 +00001516* *__slots__* are implemented at the class level by creating descriptors
1517 (:ref:`descriptors`) for each variable name. As a result, class attributes
1518 cannot be used to set default values for instance variables defined by
1519 *__slots__*; otherwise, the class attribute would overwrite the descriptor
1520 assignment.
1521
1522* If a class defines a slot also defined in a base class, the instance variable
1523 defined by the base class slot is inaccessible (except by retrieving its
1524 descriptor directly from the base class). This renders the meaning of the
1525 program undefined. In the future, a check may be added to prevent this.
1526
1527* The action of a *__slots__* declaration is limited to the class where it is
1528 defined. As a result, subclasses will have a *__dict__* unless they also define
1529 *__slots__*.
1530
1531* *__slots__* do not work for classes derived from "variable-length" built-in
1532 types such as :class:`long`, :class:`str` and :class:`tuple`.
1533
1534* Any non-string iterable may be assigned to *__slots__*. Mappings may also be
1535 used; however, in the future, special meaning may be assigned to the values
1536 corresponding to each key.
1537
1538* *__class__* assignment works only if both classes have the same *__slots__*.
1539
Georg Brandl116aa622007-08-15 14:28:22 +00001540
1541.. _metaclasses:
1542
1543Customizing class creation
1544--------------------------
1545
Georg Brandl85eb8c12007-08-31 16:33:38 +00001546By default, classes are constructed using :func:`type`. A class definition is
1547read into a separate namespace and the value of class name is bound to the
1548result of ``type(name, bases, dict)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001549
1550When the class definition is read, if *__metaclass__* is defined then the
1551callable assigned to it will be called instead of :func:`type`. The allows
1552classes or functions to be written which monitor or alter the class creation
1553process:
1554
1555* Modifying the class dictionary prior to the class being created.
1556
1557* Returning an instance of another class -- essentially performing the role of a
1558 factory function.
1559
Georg Brandl85eb8c12007-08-31 16:33:38 +00001560.. XXX needs to be updated for the "new metaclasses" PEP
Georg Brandl116aa622007-08-15 14:28:22 +00001561.. data:: __metaclass__
1562
1563 This variable can be any callable accepting arguments for ``name``, ``bases``,
1564 and ``dict``. Upon class creation, the callable is used instead of the built-in
1565 :func:`type`.
1566
Georg Brandl116aa622007-08-15 14:28:22 +00001567The appropriate metaclass is determined by the following precedence rules:
1568
1569* If ``dict['__metaclass__']`` exists, it is used.
1570
1571* Otherwise, if there is at least one base class, its metaclass is used (this
1572 looks for a *__class__* attribute first and if not found, uses its type).
1573
1574* Otherwise, if a global variable named __metaclass__ exists, it is used.
1575
Georg Brandl85eb8c12007-08-31 16:33:38 +00001576* Otherwise, the default metaclass (:class:`type`) is used.
Georg Brandl116aa622007-08-15 14:28:22 +00001577
1578The potential uses for metaclasses are boundless. Some ideas that have been
1579explored including logging, interface checking, automatic delegation, automatic
1580property creation, proxies, frameworks, and automatic resource
1581locking/synchronization.
1582
1583
1584.. _callable-types:
1585
1586Emulating callable objects
1587--------------------------
1588
1589
1590.. method:: object.__call__(self[, args...])
1591
1592 .. index:: pair: call; instance
1593
1594 Called when the instance is "called" as a function; if this method is defined,
1595 ``x(arg1, arg2, ...)`` is a shorthand for ``x.__call__(arg1, arg2, ...)``.
1596
1597
1598.. _sequence-types:
1599
1600Emulating container types
1601-------------------------
1602
1603The following methods can be defined to implement container objects. Containers
1604usually are sequences (such as lists or tuples) or mappings (like dictionaries),
1605but can represent other containers as well. The first set of methods is used
1606either to emulate a sequence or to emulate a mapping; the difference is that for
1607a sequence, the allowable keys should be the integers *k* for which ``0 <= k <
1608N`` where *N* is the length of the sequence, or slice objects, which define a
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001609range of items. It is also recommended that mappings provide the methods
Collin Winter19ab2bd2007-09-10 00:20:46 +00001610:meth:`keys`, :meth:`values`, :meth:`items`, :meth:`get`,
Fred Drake2e748782007-09-04 17:33:11 +00001611:meth:`clear`, :meth:`setdefault`,
1612:meth:`pop`, :meth:`popitem`, :meth:`copy`, and
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001613:meth:`update` behaving similar to those for Python's standard dictionary
1614objects. The :mod:`UserDict` module provides a :class:`DictMixin` class to help
1615create those methods from a base set of :meth:`__getitem__`,
1616:meth:`__setitem__`, :meth:`__delitem__`, and :meth:`keys`. Mutable sequences
1617should provide methods :meth:`append`, :meth:`count`, :meth:`index`,
1618:meth:`extend`, :meth:`insert`, :meth:`pop`, :meth:`remove`, :meth:`reverse` and
1619:meth:`sort`, like Python standard list objects. Finally, sequence types should
1620implement addition (meaning concatenation) and multiplication (meaning
1621repetition) by defining the methods :meth:`__add__`, :meth:`__radd__`,
1622:meth:`__iadd__`, :meth:`__mul__`, :meth:`__rmul__` and :meth:`__imul__`
1623described below; they should not define other numerical operators. It is
1624recommended that both mappings and sequences implement the :meth:`__contains__`
1625method to allow efficient use of the ``in`` operator; for mappings, ``in``
Collin Winter19ab2bd2007-09-10 00:20:46 +00001626should search the mapping's keys; for sequences, it should search
1627through the values. It is further recommended that both mappings and sequences
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001628implement the :meth:`__iter__` method to allow efficient iteration through the
1629container; for mappings, :meth:`__iter__` should be the same as
Fred Drake2e748782007-09-04 17:33:11 +00001630:meth:`keys`; for sequences, it should iterate through the values.
Georg Brandl116aa622007-08-15 14:28:22 +00001631
1632.. method:: object.__len__(self)
1633
1634 .. index::
1635 builtin: len
1636 single: __bool__() (object method)
1637
1638 Called to implement the built-in function :func:`len`. Should return the length
1639 of the object, an integer ``>=`` 0. Also, an object that doesn't define a
1640 :meth:`__bool__` method and whose :meth:`__len__` method returns zero is
1641 considered to be false in a Boolean context.
1642
1643
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001644.. note::
1645
1646 Slicing is done exclusively with the following three methods. A call like ::
1647
1648 a[1:2] = b
1649
1650 is translated to ::
1651
1652 a[slice(1, 2, None)] = b
1653
1654 and so forth. Missing slice items are always filled in with ``None``.
1655
1656
Georg Brandl116aa622007-08-15 14:28:22 +00001657.. method:: object.__getitem__(self, key)
1658
1659 .. index:: object: slice
1660
1661 Called to implement evaluation of ``self[key]``. For sequence types, the
1662 accepted keys should be integers and slice objects. Note that the special
1663 interpretation of negative indexes (if the class wishes to emulate a sequence
1664 type) is up to the :meth:`__getitem__` method. If *key* is of an inappropriate
1665 type, :exc:`TypeError` may be raised; if of a value outside the set of indexes
1666 for the sequence (after any special interpretation of negative values),
1667 :exc:`IndexError` should be raised. For mapping types, if *key* is missing (not
1668 in the container), :exc:`KeyError` should be raised.
1669
1670 .. note::
1671
1672 :keyword:`for` loops expect that an :exc:`IndexError` will be raised for illegal
1673 indexes to allow proper detection of the end of the sequence.
1674
1675
1676.. method:: object.__setitem__(self, key, value)
1677
1678 Called to implement assignment to ``self[key]``. Same note as for
1679 :meth:`__getitem__`. This should only be implemented for mappings if the
1680 objects support changes to the values for keys, or if new keys can be added, or
1681 for sequences if elements can be replaced. The same exceptions should be raised
1682 for improper *key* values as for the :meth:`__getitem__` method.
1683
1684
1685.. method:: object.__delitem__(self, key)
1686
1687 Called to implement deletion of ``self[key]``. Same note as for
1688 :meth:`__getitem__`. This should only be implemented for mappings if the
1689 objects support removal of keys, or for sequences if elements can be removed
1690 from the sequence. The same exceptions should be raised for improper *key*
1691 values as for the :meth:`__getitem__` method.
1692
1693
1694.. method:: object.__iter__(self)
1695
1696 This method is called when an iterator is required for a container. This method
1697 should return a new iterator object that can iterate over all the objects in the
1698 container. For mappings, it should iterate over the keys of the container, and
Fred Drake2e748782007-09-04 17:33:11 +00001699 should also be made available as the method :meth:`keys`.
Georg Brandl116aa622007-08-15 14:28:22 +00001700
1701 Iterator objects also need to implement this method; they are required to return
1702 themselves. For more information on iterator objects, see :ref:`typeiter`.
1703
1704The membership test operators (:keyword:`in` and :keyword:`not in`) are normally
1705implemented as an iteration through a sequence. However, container objects can
1706supply the following special method with a more efficient implementation, which
1707also does not require the object be a sequence.
1708
1709
1710.. method:: object.__contains__(self, item)
1711
1712 Called to implement membership test operators. Should return true if *item* is
1713 in *self*, false otherwise. For mapping objects, this should consider the keys
1714 of the mapping rather than the values or the key-item pairs.
1715
1716
Georg Brandl116aa622007-08-15 14:28:22 +00001717.. _numeric-types:
1718
1719Emulating numeric types
1720-----------------------
1721
1722The following methods can be defined to emulate numeric objects. Methods
1723corresponding to operations that are not supported by the particular kind of
1724number implemented (e.g., bitwise operations for non-integral numbers) should be
1725left undefined.
1726
1727
1728.. method:: object.__add__(self, other)
1729 object.__sub__(self, other)
1730 object.__mul__(self, other)
1731 object.__floordiv__(self, other)
1732 object.__mod__(self, other)
1733 object.__divmod__(self, other)
1734 object.__pow__(self, other[, modulo])
1735 object.__lshift__(self, other)
1736 object.__rshift__(self, other)
1737 object.__and__(self, other)
1738 object.__xor__(self, other)
1739 object.__or__(self, other)
1740
1741 .. index::
1742 builtin: divmod
1743 builtin: pow
1744 builtin: pow
1745
1746 These methods are called to implement the binary arithmetic operations (``+``,
1747 ``-``, ``*``, ``//``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``,
1748 ``>>``, ``&``, ``^``, ``|``). For instance, to evaluate the expression
1749 *x*``+``*y*, where *x* is an instance of a class that has an :meth:`__add__`
1750 method, ``x.__add__(y)`` is called. The :meth:`__divmod__` method should be the
1751 equivalent to using :meth:`__floordiv__` and :meth:`__mod__`; it should not be
1752 related to :meth:`__truediv__` (described below). Note that :meth:`__pow__`
1753 should be defined to accept an optional third argument if the ternary version of
1754 the built-in :func:`pow` function is to be supported.
1755
1756 If one of those methods does not support the operation with the supplied
1757 arguments, it should return ``NotImplemented``.
1758
1759
1760.. method:: object.__div__(self, other)
1761 object.__truediv__(self, other)
1762
1763 The division operator (``/``) is implemented by these methods. The
1764 :meth:`__truediv__` method is used when ``__future__.division`` is in effect,
1765 otherwise :meth:`__div__` is used. If only one of these two methods is defined,
1766 the object will not support division in the alternate context; :exc:`TypeError`
1767 will be raised instead.
1768
1769
1770.. method:: object.__radd__(self, other)
1771 object.__rsub__(self, other)
1772 object.__rmul__(self, other)
1773 object.__rdiv__(self, other)
1774 object.__rtruediv__(self, other)
1775 object.__rfloordiv__(self, other)
1776 object.__rmod__(self, other)
1777 object.__rdivmod__(self, other)
1778 object.__rpow__(self, other)
1779 object.__rlshift__(self, other)
1780 object.__rrshift__(self, other)
1781 object.__rand__(self, other)
1782 object.__rxor__(self, other)
1783 object.__ror__(self, other)
1784
1785 .. index::
1786 builtin: divmod
1787 builtin: pow
1788
1789 These methods are called to implement the binary arithmetic operations (``+``,
1790 ``-``, ``*``, ``/``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``, ``>>``,
1791 ``&``, ``^``, ``|``) with reflected (swapped) operands. These functions are
1792 only called if the left operand does not support the corresponding operation and
1793 the operands are of different types. [#]_ For instance, to evaluate the
1794 expression *x*``-``*y*, where *y* is an instance of a class that has an
1795 :meth:`__rsub__` method, ``y.__rsub__(x)`` is called if ``x.__sub__(y)`` returns
1796 *NotImplemented*.
1797
1798 .. index:: builtin: pow
1799
1800 Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the
1801 coercion rules would become too complicated).
1802
1803 .. note::
1804
1805 If the right operand's type is a subclass of the left operand's type and that
1806 subclass provides the reflected method for the operation, this method will be
1807 called before the left operand's non-reflected method. This behavior allows
1808 subclasses to override their ancestors' operations.
1809
1810
1811.. method:: object.__iadd__(self, other)
1812 object.__isub__(self, other)
1813 object.__imul__(self, other)
1814 object.__idiv__(self, other)
1815 object.__itruediv__(self, other)
1816 object.__ifloordiv__(self, other)
1817 object.__imod__(self, other)
1818 object.__ipow__(self, other[, modulo])
1819 object.__ilshift__(self, other)
1820 object.__irshift__(self, other)
1821 object.__iand__(self, other)
1822 object.__ixor__(self, other)
1823 object.__ior__(self, other)
1824
1825 These methods are called to implement the augmented arithmetic operations
1826 (``+=``, ``-=``, ``*=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, ``>>=``,
1827 ``&=``, ``^=``, ``|=``). These methods should attempt to do the operation
1828 in-place (modifying *self*) and return the result (which could be, but does
1829 not have to be, *self*). If a specific method is not defined, the augmented
1830 operation falls back to the normal methods. For instance, to evaluate the
1831 expression *x*``+=``*y*, where *x* is an instance of a class that has an
1832 :meth:`__iadd__` method, ``x.__iadd__(y)`` is called. If *x* is an instance
1833 of a class that does not define a :meth:`__iadd__` method, ``x.__add__(y)``
1834 and ``y.__radd__(x)`` are considered, as with the evaluation of *x*``+``*y*.
1835
1836
1837.. method:: object.__neg__(self)
1838 object.__pos__(self)
1839 object.__abs__(self)
1840 object.__invert__(self)
1841
1842 .. index:: builtin: abs
1843
1844 Called to implement the unary arithmetic operations (``-``, ``+``, :func:`abs`
1845 and ``~``).
1846
1847
1848.. method:: object.__complex__(self)
1849 object.__int__(self)
1850 object.__long__(self)
1851 object.__float__(self)
1852
1853 .. index::
1854 builtin: complex
1855 builtin: int
1856 builtin: long
1857 builtin: float
1858
1859 Called to implement the built-in functions :func:`complex`, :func:`int`,
1860 :func:`long`, and :func:`float`. Should return a value of the appropriate type.
1861
1862
1863.. method:: object.__index__(self)
1864
1865 Called to implement :func:`operator.index`. Also called whenever Python needs
1866 an integer object (such as in slicing, or in the built-in :func:`bin`,
1867 :func:`hex` and :func:`oct` functions). Must return an integer (int or long).
1868
Georg Brandl116aa622007-08-15 14:28:22 +00001869
1870.. _context-managers:
1871
1872With Statement Context Managers
1873-------------------------------
1874
Georg Brandl116aa622007-08-15 14:28:22 +00001875A :dfn:`context manager` is an object that defines the runtime context to be
1876established when executing a :keyword:`with` statement. The context manager
1877handles the entry into, and the exit from, the desired runtime context for the
1878execution of the block of code. Context managers are normally invoked using the
1879:keyword:`with` statement (described in section :ref:`with`), but can also be
1880used by directly invoking their methods.
1881
1882.. index::
1883 statement: with
1884 single: context manager
1885
1886Typical uses of context managers include saving and restoring various kinds of
1887global state, locking and unlocking resources, closing opened files, etc.
1888
1889For more information on context managers, see :ref:`typecontextmanager`.
1890
1891
1892.. method:: object.__enter__(self)
1893
1894 Enter the runtime context related to this object. The :keyword:`with` statement
1895 will bind this method's return value to the target(s) specified in the
1896 :keyword:`as` clause of the statement, if any.
1897
1898
1899.. method:: object.__exit__(self, exc_type, exc_value, traceback)
1900
1901 Exit the runtime context related to this object. The parameters describe the
1902 exception that caused the context to be exited. If the context was exited
1903 without an exception, all three arguments will be :const:`None`.
1904
1905 If an exception is supplied, and the method wishes to suppress the exception
1906 (i.e., prevent it from being propagated), it should return a true value.
1907 Otherwise, the exception will be processed normally upon exit from this method.
1908
1909 Note that :meth:`__exit__` methods should not reraise the passed-in exception;
1910 this is the caller's responsibility.
1911
1912
1913.. seealso::
1914
1915 :pep:`0343` - The "with" statement
1916 The specification, background, and examples for the Python :keyword:`with`
1917 statement.
1918
1919.. rubric:: Footnotes
1920
Guido van Rossum04110fb2007-08-24 16:32:05 +00001921.. [#] A descriptor can define any combination of :meth:`__get__`,
1922 :meth:`__set__` and :meth:`__delete__`. If it does not define :meth:`__get__`,
1923 then accessing the attribute even on an instance will return the descriptor
1924 object itself. If the descriptor defines :meth:`__set__` and/or
1925 :meth:`__delete__`, it is a data descriptor; if it defines neither, it is a
1926 non-data descriptor.
1927
Georg Brandl116aa622007-08-15 14:28:22 +00001928.. [#] For operands of the same type, it is assumed that if the non-reflected method
1929 (such as :meth:`__add__`) fails the operation is not supported, which is why the
1930 reflected method is not called.
1931