blob: 68e9f104727030aa8aa6fece6ab43eb9e1e15968 [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
Georg Brandl2e0b7552007-11-27 12:43:08 +0000532 Instance methods
Georg Brandl116aa622007-08-15 14:28:22 +0000533 .. index::
534 object: method
535 object: user-defined method
536 pair: user-defined; method
537
Georg Brandl2e0b7552007-11-27 12:43:08 +0000538 An instance method object combines a class, a class instance and any
539 callable object (normally a user-defined function).
540
541 .. index::
542 single: __func__ (method attribute)
543 single: __self__ (method attribute)
544 single: __doc__ (method attribute)
545 single: __name__ (method attribute)
546 single: __module__ (method attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000547
Christian Heimesff737952007-11-27 10:40:20 +0000548 Special read-only attributes: :attr:`__self__` is the class instance object,
549 :attr:`__func__` is the function object; :attr:`__doc__` is the method's
550 documentation (same as ``__func__.__doc__``); :attr:`__name__` is the
551 method name (same as ``__func__.__name__``); :attr:`__module__` is the
552 name of the module the method was defined in, or ``None`` if unavailable.
Georg Brandl116aa622007-08-15 14:28:22 +0000553
Georg Brandl116aa622007-08-15 14:28:22 +0000554 Methods also support accessing (but not setting) the arbitrary function
555 attributes on the underlying function object.
556
Georg Brandl2e0b7552007-11-27 12:43:08 +0000557 User-defined method objects may be created when getting an attribute of a
558 class (perhaps via an instance of that class), if that attribute is a
559 user-defined function object or a class method object.
560
561 When an instance method object is created by retrieving a user-defined
562 function object from a class via one of its instances, its
563 :attr:`__self__` attribute is the instance, and the method object is said
564 to be bound. The new method's :attr:`__func__` attribute is the original
565 function object.
Georg Brandl116aa622007-08-15 14:28:22 +0000566
Georg Brandl2e0b7552007-11-27 12:43:08 +0000567 When a user-defined method object is created by retrieving another method
568 object from a class or instance, the behaviour is the same as for a
569 function object, except that the :attr:`__func__` attribute of the new
570 instance is not the original method object but its :attr:`__func__`
571 attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000572
Georg Brandl2e0b7552007-11-27 12:43:08 +0000573 When an instance method object is created by retrieving a class method
574 object from a class or instance, its :attr:`__self__` attribute is the
575 class itself, and its :attr:`__func__` attribute is the function object
576 underlying the class method.
Georg Brandl116aa622007-08-15 14:28:22 +0000577
Georg Brandl2e0b7552007-11-27 12:43:08 +0000578 When an instance method object is called, the underlying function
579 (:attr:`__func__`) is called, inserting the class instance
580 (:attr:`__self__`) in front of the argument list. For instance, when
581 :class:`C` is a class which contains a definition for a function
582 :meth:`f`, and ``x`` is an instance of :class:`C`, calling ``x.f(1)`` is
583 equivalent to calling ``C.f(x, 1)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000584
Georg Brandl2e0b7552007-11-27 12:43:08 +0000585 When an instance method object is derived from a class method object, the
586 "class instance" stored in :attr:`__self__` will actually be the class
587 itself, so that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to
588 calling ``f(C,1)`` where ``f`` is the underlying function.
Georg Brandl116aa622007-08-15 14:28:22 +0000589
Georg Brandl2e0b7552007-11-27 12:43:08 +0000590 Note that the transformation from function object to instance method
591 object happens each time the attribute is retrieved from the instance. In
592 some cases, a fruitful optimization is to assign the attribute to a local
593 variable and call that local variable. Also notice that this
594 transformation only happens for user-defined functions; other callable
595 objects (and all non-callable objects) are retrieved without
596 transformation. It is also important to note that user-defined functions
597 which are attributes of a class instance are not converted to bound
598 methods; this *only* happens when the function is an attribute of the
599 class.
Georg Brandl116aa622007-08-15 14:28:22 +0000600
601 Generator functions
602 .. index::
603 single: generator; function
604 single: generator; iterator
605
606 A function or method which uses the :keyword:`yield` statement (see section
607 :ref:`yield`) is called a :dfn:`generator
608 function`. Such a function, when called, always returns an iterator object
609 which can be used to execute the body of the function: calling the iterator's
610 :meth:`__next__` method will cause the function to execute until it provides a
611 value using the :keyword:`yield` statement. When the function executes a
612 :keyword:`return` statement or falls off the end, a :exc:`StopIteration`
613 exception is raised and the iterator will have reached the end of the set of
614 values to be returned.
615
616 Built-in functions
617 .. index::
618 object: built-in function
619 object: function
620 pair: C; language
621
622 A built-in function object is a wrapper around a C function. Examples of
623 built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a
624 standard built-in module). The number and type of the arguments are
625 determined by the C function. Special read-only attributes:
626 :attr:`__doc__` is the function's documentation string, or ``None`` if
627 unavailable; :attr:`__name__` is the function's name; :attr:`__self__` is
628 set to ``None`` (but see the next item); :attr:`__module__` is the name of
629 the module the function was defined in or ``None`` if unavailable.
630
631 Built-in methods
632 .. index::
633 object: built-in method
634 object: method
635 pair: built-in; method
636
637 This is really a different disguise of a built-in function, this time containing
638 an object passed to the C function as an implicit extra argument. An example of
639 a built-in method is ``alist.append()``, assuming *alist* is a list object. In
640 this case, the special read-only attribute :attr:`__self__` is set to the object
641 denoted by *list*.
642
Georg Brandl85eb8c12007-08-31 16:33:38 +0000643 Classes
644 Classes are callable. These objects normally act as factories for new
645 instances of themselves, but variations are possible for class types that
646 override :meth:`__new__`. The arguments of the call are passed to
647 :meth:`__new__` and, in the typical case, to :meth:`__init__` to
648 initialize the new instance.
Georg Brandl116aa622007-08-15 14:28:22 +0000649
Georg Brandl85eb8c12007-08-31 16:33:38 +0000650 Class Instances
651 Instances of arbitrary classes can be made callable by defining a
652 :meth:`__call__` method in their class.
Georg Brandl116aa622007-08-15 14:28:22 +0000653
Georg Brandl116aa622007-08-15 14:28:22 +0000654
655Modules
656 .. index::
657 statement: import
658 object: module
659
660 Modules are imported by the :keyword:`import` statement (see section
661 :ref:`import`). A module object has a
662 namespace implemented by a dictionary object (this is the dictionary referenced
663 by the __globals__ attribute of functions defined in the module). Attribute
664 references are translated to lookups in this dictionary, e.g., ``m.x`` is
665 equivalent to ``m.__dict__["x"]``. A module object does not contain the code
666 object used to initialize the module (since it isn't needed once the
667 initialization is done).
668
669 .. %
670
671 Attribute assignment updates the module's namespace dictionary, e.g., ``m.x =
672 1`` is equivalent to ``m.__dict__["x"] = 1``.
673
674 .. index:: single: __dict__ (module attribute)
675
676 Special read-only attribute: :attr:`__dict__` is the module's namespace as a
677 dictionary object.
678
679 .. index::
680 single: __name__ (module attribute)
681 single: __doc__ (module attribute)
682 single: __file__ (module attribute)
683 pair: module; namespace
684
685 Predefined (writable) attributes: :attr:`__name__` is the module's name;
686 :attr:`__doc__` is the module's documentation string, or ``None`` if
687 unavailable; :attr:`__file__` is the pathname of the file from which the module
688 was loaded, if it was loaded from a file. The :attr:`__file__` attribute is not
689 present for C modules that are statically linked into the interpreter; for
690 extension modules loaded dynamically from a shared library, it is the pathname
691 of the shared library file.
692
Georg Brandl85eb8c12007-08-31 16:33:38 +0000693.. XXX "Classes" and "Instances" is outdated!
694 see http://www.python.org/doc/newstyle.html for newstyle information
695
696Custom classes
Georg Brandl116aa622007-08-15 14:28:22 +0000697 Class objects are created by class definitions (see section :ref:`class`). A
698 class has a namespace implemented by a dictionary object. Class attribute
699 references are translated to lookups in this dictionary, e.g., ``C.x`` is
700 translated to ``C.__dict__["x"]``. When the attribute name is not found
701 there, the attribute search continues in the base classes. The search is
702 depth-first, left-to-right in the order of occurrence in the base class list.
703
Georg Brandl85eb8c12007-08-31 16:33:38 +0000704 .. XXX document descriptors and new MRO
705
Georg Brandl116aa622007-08-15 14:28:22 +0000706 .. index::
707 object: class
708 object: class instance
709 object: instance
710 pair: class object; call
711 single: container
712 object: dictionary
713 pair: class; attribute
714
715 When a class attribute reference (for class :class:`C`, say) would yield a
Georg Brandl2e0b7552007-11-27 12:43:08 +0000716 class method object, it is transformed into an instance method object whose
717 :attr:`__self__` attributes is :class:`C`. When it would yield a static
718 method object, it is transformed into the object wrapped by the static method
719 object. See section :ref:`descriptors` for another way in which attributes
720 retrieved from a class may differ from those actually contained in its
721 :attr:`__dict__`.
Georg Brandl116aa622007-08-15 14:28:22 +0000722
723 .. index:: triple: class; attribute; assignment
724
725 Class attribute assignments update the class's dictionary, never the dictionary
726 of a base class.
727
728 .. index:: pair: class object; call
729
730 A class object can be called (see above) to yield a class instance (see below).
731
732 .. index::
733 single: __name__ (class attribute)
734 single: __module__ (class attribute)
735 single: __dict__ (class attribute)
736 single: __bases__ (class attribute)
737 single: __doc__ (class attribute)
738
739 Special attributes: :attr:`__name__` is the class name; :attr:`__module__` is
740 the module name in which the class was defined; :attr:`__dict__` is the
741 dictionary containing the class's namespace; :attr:`__bases__` is a tuple
742 (possibly empty or a singleton) containing the base classes, in the order of
743 their occurrence in the base class list; :attr:`__doc__` is the class's
744 documentation string, or None if undefined.
745
746Class instances
747 .. index::
748 object: class instance
749 object: instance
750 pair: class; instance
751 pair: class instance; attribute
752
Georg Brandl2e0b7552007-11-27 12:43:08 +0000753 A class instance is created by calling a class object (see above). A class
754 instance has a namespace implemented as a dictionary which is the first place
755 in which attribute references are searched. When an attribute is not found
756 there, and the instance's class has an attribute by that name, the search
757 continues with the class attributes. If a class attribute is found that is a
758 user-defined function object, it is transformed into an instance method
759 object whose :attr:`__self__` attribute is the instance. Static method and
760 class method objects are also transformed; see above under "Classes". See
761 section :ref:`descriptors` for another way in which attributes of a class
762 retrieved via its instances may differ from the objects actually stored in
763 the class's :attr:`__dict__`. If no class attribute is found, and the
764 object's class has a :meth:`__getattr__` method, that is called to satisfy
765 the lookup.
Georg Brandl116aa622007-08-15 14:28:22 +0000766
767 .. index:: triple: class instance; attribute; assignment
768
769 Attribute assignments and deletions update the instance's dictionary, never a
770 class's dictionary. If the class has a :meth:`__setattr__` or
771 :meth:`__delattr__` method, this is called instead of updating the instance
772 dictionary directly.
773
774 .. index::
775 object: numeric
776 object: sequence
777 object: mapping
778
779 Class instances can pretend to be numbers, sequences, or mappings if they have
780 methods with certain special names. See section :ref:`specialnames`.
781
782 .. index::
783 single: __dict__ (instance attribute)
784 single: __class__ (instance attribute)
785
786 Special attributes: :attr:`__dict__` is the attribute dictionary;
787 :attr:`__class__` is the instance's class.
788
789Files
790 .. index::
791 object: file
792 builtin: open
793 single: popen() (in module os)
794 single: makefile() (socket method)
795 single: sys.stdin
796 single: sys.stdout
797 single: sys.stderr
798 single: stdio
799 single: stdin (in module sys)
800 single: stdout (in module sys)
801 single: stderr (in module sys)
802
803 A file object represents an open file. File objects are created by the
804 :func:`open` built-in function, and also by :func:`os.popen`,
805 :func:`os.fdopen`, and the :meth:`makefile` method of socket objects (and
806 perhaps by other functions or methods provided by extension modules). The
807 objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are initialized to
808 file objects corresponding to the interpreter's standard input, output and
809 error streams. See :ref:`bltin-file-objects` for complete documentation of
810 file objects.
811
812Internal types
813 .. index::
814 single: internal type
815 single: types, internal
816
817 A few types used internally by the interpreter are exposed to the user. Their
818 definitions may change with future versions of the interpreter, but they are
819 mentioned here for completeness.
820
821 Code objects
822 .. index::
823 single: bytecode
824 object: code
825
Georg Brandl9afde1c2007-11-01 20:32:30 +0000826 Code objects represent *byte-compiled* executable Python code, or :term:`bytecode`.
Georg Brandl116aa622007-08-15 14:28:22 +0000827 The difference between a code object and a function object is that the function
828 object contains an explicit reference to the function's globals (the module in
829 which it was defined), while a code object contains no context; also the default
830 argument values are stored in the function object, not in the code object
831 (because they represent values calculated at run-time). Unlike function
832 objects, code objects are immutable and contain no references (directly or
833 indirectly) to mutable objects.
834
835 Special read-only attributes: :attr:`co_name` gives the function name;
836 :attr:`co_argcount` is the number of positional arguments (including arguments
837 with default values); :attr:`co_nlocals` is the number of local variables used
838 by the function (including arguments); :attr:`co_varnames` is a tuple containing
839 the names of the local variables (starting with the argument names);
840 :attr:`co_cellvars` is a tuple containing the names of local variables that are
841 referenced by nested functions; :attr:`co_freevars` is a tuple containing the
842 names of free variables; :attr:`co_code` is a string representing the sequence
843 of bytecode instructions; :attr:`co_consts` is a tuple containing the literals
844 used by the bytecode; :attr:`co_names` is a tuple containing the names used by
845 the bytecode; :attr:`co_filename` is the filename from which the code was
846 compiled; :attr:`co_firstlineno` is the first line number of the function;
Georg Brandl9afde1c2007-11-01 20:32:30 +0000847 :attr:`co_lnotab` is a string encoding the mapping from bytecode offsets to
Georg Brandl116aa622007-08-15 14:28:22 +0000848 line numbers (for details see the source code of the interpreter);
849 :attr:`co_stacksize` is the required stack size (including local variables);
850 :attr:`co_flags` is an integer encoding a number of flags for the interpreter.
851
852 .. index::
853 single: co_argcount (code object attribute)
854 single: co_code (code object attribute)
855 single: co_consts (code object attribute)
856 single: co_filename (code object attribute)
857 single: co_firstlineno (code object attribute)
858 single: co_flags (code object attribute)
859 single: co_lnotab (code object attribute)
860 single: co_name (code object attribute)
861 single: co_names (code object attribute)
862 single: co_nlocals (code object attribute)
863 single: co_stacksize (code object attribute)
864 single: co_varnames (code object attribute)
865 single: co_cellvars (code object attribute)
866 single: co_freevars (code object attribute)
867
868 .. index:: object: generator
869
870 The following flag bits are defined for :attr:`co_flags`: bit ``0x04`` is set if
871 the function uses the ``*arguments`` syntax to accept an arbitrary number of
872 positional arguments; bit ``0x08`` is set if the function uses the
873 ``**keywords`` syntax to accept arbitrary keyword arguments; bit ``0x20`` is set
874 if the function is a generator.
875
876 Future feature declarations (``from __future__ import division``) also use bits
877 in :attr:`co_flags` to indicate whether a code object was compiled with a
878 particular feature enabled: bit ``0x2000`` is set if the function was compiled
879 with future division enabled; bits ``0x10`` and ``0x1000`` were used in earlier
880 versions of Python.
881
882 Other bits in :attr:`co_flags` are reserved for internal use.
883
884 .. index:: single: documentation string
885
886 If a code object represents a function, the first item in :attr:`co_consts` is
887 the documentation string of the function, or ``None`` if undefined.
888
889 Frame objects
890 .. index:: object: frame
891
892 Frame objects represent execution frames. They may occur in traceback objects
893 (see below).
894
895 .. index::
896 single: f_back (frame attribute)
897 single: f_code (frame attribute)
898 single: f_globals (frame attribute)
899 single: f_locals (frame attribute)
900 single: f_lasti (frame attribute)
901 single: f_builtins (frame attribute)
902
903 Special read-only attributes: :attr:`f_back` is to the previous stack frame
904 (towards the caller), or ``None`` if this is the bottom stack frame;
905 :attr:`f_code` is the code object being executed in this frame; :attr:`f_locals`
906 is the dictionary used to look up local variables; :attr:`f_globals` is used for
907 global variables; :attr:`f_builtins` is used for built-in (intrinsic) names;
908 :attr:`f_lasti` gives the precise instruction (this is an index into the
909 bytecode string of the code object).
910
911 .. index::
912 single: f_trace (frame attribute)
913 single: f_exc_type (frame attribute)
914 single: f_exc_value (frame attribute)
915 single: f_exc_traceback (frame attribute)
916 single: f_lineno (frame attribute)
917
918 Special writable attributes: :attr:`f_trace`, if not ``None``, is a function
919 called at the start of each source code line (this is used by the debugger);
920 :attr:`f_exc_type`, :attr:`f_exc_value`, :attr:`f_exc_traceback` represent the
921 last exception raised in the parent frame provided another exception was ever
922 raised in the current frame (in all other cases they are None); :attr:`f_lineno`
923 is the current line number of the frame --- writing to this from within a trace
924 function jumps to the given line (only for the bottom-most frame). A debugger
925 can implement a Jump command (aka Set Next Statement) by writing to f_lineno.
926
927 Traceback objects
928 .. index::
929 object: traceback
930 pair: stack; trace
931 pair: exception; handler
932 pair: execution; stack
933 single: exc_info (in module sys)
934 single: exc_traceback (in module sys)
935 single: last_traceback (in module sys)
936 single: sys.exc_info
937 single: sys.last_traceback
938
939 Traceback objects represent a stack trace of an exception. A traceback object
940 is created when an exception occurs. When the search for an exception handler
941 unwinds the execution stack, at each unwound level a traceback object is
942 inserted in front of the current traceback. When an exception handler is
943 entered, the stack trace is made available to the program. (See section
944 :ref:`try`.) It is accessible as the third item of the
945 tuple returned by ``sys.exc_info()``. When the program contains no suitable
946 handler, the stack trace is written (nicely formatted) to the standard error
947 stream; if the interpreter is interactive, it is also made available to the user
948 as ``sys.last_traceback``.
949
950 .. index::
951 single: tb_next (traceback attribute)
952 single: tb_frame (traceback attribute)
953 single: tb_lineno (traceback attribute)
954 single: tb_lasti (traceback attribute)
955 statement: try
956
957 Special read-only attributes: :attr:`tb_next` is the next level in the stack
958 trace (towards the frame where the exception occurred), or ``None`` if there is
959 no next level; :attr:`tb_frame` points to the execution frame of the current
960 level; :attr:`tb_lineno` gives the line number where the exception occurred;
961 :attr:`tb_lasti` indicates the precise instruction. The line number and last
962 instruction in the traceback may differ from the line number of its frame object
963 if the exception occurred in a :keyword:`try` statement with no matching except
964 clause or with a finally clause.
965
966 Slice objects
967 .. index:: builtin: slice
968
Georg Brandlcb8ecb12007-09-04 06:35:14 +0000969 Slice objects are used to represent slices for :meth:`__getitem__`
970 methods. They are also created by the built-in :func:`slice` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000971
972 .. index::
973 single: start (slice object attribute)
974 single: stop (slice object attribute)
975 single: step (slice object attribute)
976
977 Special read-only attributes: :attr:`start` is the lower bound; :attr:`stop` is
978 the upper bound; :attr:`step` is the step value; each is ``None`` if omitted.
979 These attributes can have any type.
980
981 Slice objects support one method:
982
Georg Brandl116aa622007-08-15 14:28:22 +0000983 .. method:: slice.indices(self, length)
984
Georg Brandlcb8ecb12007-09-04 06:35:14 +0000985 This method takes a single integer argument *length* and computes
986 information about the slice that the slice object would describe if
987 applied to a sequence of *length* items. It returns a tuple of three
988 integers; respectively these are the *start* and *stop* indices and the
989 *step* or stride length of the slice. Missing or out-of-bounds indices
990 are handled in a manner consistent with regular slices.
Georg Brandl116aa622007-08-15 14:28:22 +0000991
Georg Brandl116aa622007-08-15 14:28:22 +0000992 Static method objects
993 Static method objects provide a way of defeating the transformation of function
994 objects to method objects described above. A static method object is a wrapper
995 around any other object, usually a user-defined method object. When a static
996 method object is retrieved from a class or a class instance, the object actually
997 returned is the wrapped object, which is not subject to any further
998 transformation. Static method objects are not themselves callable, although the
999 objects they wrap usually are. Static method objects are created by the built-in
1000 :func:`staticmethod` constructor.
1001
1002 Class method objects
1003 A class method object, like a static method object, is a wrapper around another
1004 object that alters the way in which that object is retrieved from classes and
1005 class instances. The behaviour of class method objects upon such retrieval is
1006 described above, under "User-defined methods". Class method objects are created
1007 by the built-in :func:`classmethod` constructor.
1008
1009 .. % Internal types
1010
Georg Brandl116aa622007-08-15 14:28:22 +00001011.. % =========================================================================
1012
Georg Brandl9afde1c2007-11-01 20:32:30 +00001013.. _newstyle:
Georg Brandl116aa622007-08-15 14:28:22 +00001014
1015.. _specialnames:
1016
1017Special method names
1018====================
1019
1020.. index::
1021 pair: operator; overloading
1022 single: __getitem__() (mapping object method)
1023
1024A class can implement certain operations that are invoked by special syntax
1025(such as arithmetic operations or subscripting and slicing) by defining methods
1026with special names. This is Python's approach to :dfn:`operator overloading`,
1027allowing classes to define their own behavior with respect to language
1028operators. For instance, if a class defines a method named :meth:`__getitem__`,
Georg Brandl85eb8c12007-08-31 16:33:38 +00001029and ``x`` is an instance of this class, then ``x[i]`` is equivalent to
Georg Brandl116aa622007-08-15 14:28:22 +00001030``x.__getitem__(i)``. Except where mentioned, attempts to execute an operation
1031raise an exception when no appropriate method is defined.
1032
Georg Brandl85eb8c12007-08-31 16:33:38 +00001033.. XXX above translation is not correct for new-style classes!
1034
Georg Brandl65ea9bd2007-09-05 13:36:27 +00001035Special methods are only guaranteed to work if defined in an object's class, not
1036in the object's instance dictionary. That explains why this won't work::
1037
1038 >>> class C:
1039 ... pass
1040 ...
1041 >>> c = C()
1042 >>> c.__len__ = lambda: 5
1043 >>> len(c)
1044 Traceback (most recent call last):
1045 File "<stdin>", line 1, in <module>
1046 TypeError: object of type 'C' has no len()
1047
1048
Georg Brandl116aa622007-08-15 14:28:22 +00001049When implementing a class that emulates any built-in type, it is important that
1050the emulation only be implemented to the degree that it makes sense for the
1051object being modelled. For example, some sequences may work well with retrieval
1052of individual elements, but extracting a slice may not make sense. (One example
1053of this is the :class:`NodeList` interface in the W3C's Document Object Model.)
1054
1055
1056.. _customization:
1057
1058Basic customization
1059-------------------
1060
1061
1062.. method:: object.__new__(cls[, ...])
1063
1064 Called to create a new instance of class *cls*. :meth:`__new__` is a static
1065 method (special-cased so you need not declare it as such) that takes the class
1066 of which an instance was requested as its first argument. The remaining
1067 arguments are those passed to the object constructor expression (the call to the
1068 class). The return value of :meth:`__new__` should be the new object instance
1069 (usually an instance of *cls*).
1070
1071 Typical implementations create a new instance of the class by invoking the
1072 superclass's :meth:`__new__` method using ``super(currentclass,
1073 cls).__new__(cls[, ...])`` with appropriate arguments and then modifying the
1074 newly-created instance as necessary before returning it.
1075
1076 If :meth:`__new__` returns an instance of *cls*, then the new instance's
1077 :meth:`__init__` method will be invoked like ``__init__(self[, ...])``, where
1078 *self* is the new instance and the remaining arguments are the same as were
1079 passed to :meth:`__new__`.
1080
1081 If :meth:`__new__` does not return an instance of *cls*, then the new instance's
1082 :meth:`__init__` method will not be invoked.
1083
1084 :meth:`__new__` is intended mainly to allow subclasses of immutable types (like
1085 int, str, or tuple) to customize instance creation.
1086
1087
1088.. method:: object.__init__(self[, ...])
1089
1090 .. index:: pair: class; constructor
1091
1092 Called when the instance is created. The arguments are those passed to the
1093 class constructor expression. If a base class has an :meth:`__init__` method,
1094 the derived class's :meth:`__init__` method, if any, must explicitly call it to
1095 ensure proper initialization of the base class part of the instance; for
1096 example: ``BaseClass.__init__(self, [args...])``. As a special constraint on
1097 constructors, no value may be returned; doing so will cause a :exc:`TypeError`
1098 to be raised at runtime.
1099
1100
1101.. method:: object.__del__(self)
1102
1103 .. index::
1104 single: destructor
1105 statement: del
1106
1107 Called when the instance is about to be destroyed. This is also called a
1108 destructor. If a base class has a :meth:`__del__` method, the derived class's
1109 :meth:`__del__` method, if any, must explicitly call it to ensure proper
1110 deletion of the base class part of the instance. Note that it is possible
1111 (though not recommended!) for the :meth:`__del__` method to postpone destruction
1112 of the instance by creating a new reference to it. It may then be called at a
1113 later time when this new reference is deleted. It is not guaranteed that
1114 :meth:`__del__` methods are called for objects that still exist when the
1115 interpreter exits.
1116
1117 .. note::
1118
1119 ``del x`` doesn't directly call ``x.__del__()`` --- the former decrements
1120 the reference count for ``x`` by one, and the latter is only called when
1121 ``x``'s reference count reaches zero. Some common situations that may
1122 prevent the reference count of an object from going to zero include:
1123 circular references between objects (e.g., a doubly-linked list or a tree
1124 data structure with parent and child pointers); a reference to the object
1125 on the stack frame of a function that caught an exception (the traceback
1126 stored in ``sys.exc_info()[2]`` keeps the stack frame alive); or a
1127 reference to the object on the stack frame that raised an unhandled
1128 exception in interactive mode (the traceback stored in
1129 ``sys.last_traceback`` keeps the stack frame alive). The first situation
1130 can only be remedied by explicitly breaking the cycles; the latter two
1131 situations can be resolved by storing ``None`` in ``sys.last_traceback``.
1132 Circular references which are garbage are detected when the option cycle
1133 detector is enabled (it's on by default), but can only be cleaned up if
1134 there are no Python- level :meth:`__del__` methods involved. Refer to the
1135 documentation for the :mod:`gc` module for more information about how
1136 :meth:`__del__` methods are handled by the cycle detector, particularly
1137 the description of the ``garbage`` value.
1138
1139 .. warning::
1140
1141 Due to the precarious circumstances under which :meth:`__del__` methods are
1142 invoked, exceptions that occur during their execution are ignored, and a warning
1143 is printed to ``sys.stderr`` instead. Also, when :meth:`__del__` is invoked in
1144 response to a module being deleted (e.g., when execution of the program is
1145 done), other globals referenced by the :meth:`__del__` method may already have
1146 been deleted. For this reason, :meth:`__del__` methods should do the absolute
1147 minimum needed to maintain external invariants. Starting with version 1.5,
1148 Python guarantees that globals whose name begins with a single underscore are
1149 deleted from their module before other globals are deleted; if no other
1150 references to such globals exist, this may help in assuring that imported
1151 modules are still available at the time when the :meth:`__del__` method is
1152 called.
1153
1154
1155.. method:: object.__repr__(self)
1156
1157 .. index:: builtin: repr
1158
1159 Called by the :func:`repr` built-in function and by string conversions (reverse
1160 quotes) to compute the "official" string representation of an object. If at all
1161 possible, this should look like a valid Python expression that could be used to
1162 recreate an object with the same value (given an appropriate environment). If
1163 this is not possible, a string of the form ``<...some useful description...>``
1164 should be returned. The return value must be a string object. If a class
1165 defines :meth:`__repr__` but not :meth:`__str__`, then :meth:`__repr__` is also
1166 used when an "informal" string representation of instances of that class is
1167 required.
1168
Georg Brandl116aa622007-08-15 14:28:22 +00001169 This is typically used for debugging, so it is important that the representation
1170 is information-rich and unambiguous.
1171
1172
1173.. method:: object.__str__(self)
1174
1175 .. index::
1176 builtin: str
Georg Brandl4b491312007-08-31 09:22:56 +00001177 builtin: print
Georg Brandl116aa622007-08-15 14:28:22 +00001178
Georg Brandldcc56f82007-08-31 16:41:12 +00001179 Called by the :func:`str` built-in function and by the :func:`print` function
1180 to compute the "informal" string representation of an object. This differs
1181 from :meth:`__repr__` in that it does not have to be a valid Python
Georg Brandl116aa622007-08-15 14:28:22 +00001182 expression: a more convenient or concise representation may be used instead.
1183 The return value must be a string object.
1184
Georg Brandldcc56f82007-08-31 16:41:12 +00001185 .. XXX what about subclasses of string?
1186
Georg Brandl116aa622007-08-15 14:28:22 +00001187
Georg Brandl4b491312007-08-31 09:22:56 +00001188.. method:: object.__format__(self, format_spec)
1189
1190 .. index::
1191 pair: string; conversion
1192 builtin: str
1193 builtin: print
1194
1195 Called by the :func:`format` built-in function (and by extension, the
1196 :meth:`format` method of class :class:`str`) to produce a "formatted"
1197 string representation of an object. The ``format_spec`` argument is
1198 a string that contains a description of the formatting options desired.
1199 The interpretation of the ``format_spec`` argument is up to the type
1200 implementing :meth:`__format__`, however most classes will either
1201 delegate formatting to one of the built-in types, or use a similar
1202 formatting option syntax.
1203
1204 See :ref:`formatspec` for a description of the standard formatting syntax.
1205
1206 The return value must be a string object.
1207
1208
Georg Brandl116aa622007-08-15 14:28:22 +00001209.. method:: object.__lt__(self, other)
1210 object.__le__(self, other)
1211 object.__eq__(self, other)
1212 object.__ne__(self, other)
1213 object.__gt__(self, other)
1214 object.__ge__(self, other)
1215
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001216 .. index::
1217 single: comparisons
1218
Georg Brandl116aa622007-08-15 14:28:22 +00001219 These are the so-called "rich comparison" methods, and are called for comparison
1220 operators in preference to :meth:`__cmp__` below. The correspondence between
1221 operator symbols and method names is as follows: ``x<y`` calls ``x.__lt__(y)``,
1222 ``x<=y`` calls ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` calls
1223 ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` calls
1224 ``x.__ge__(y)``.
1225
1226 A rich comparison method may return the singleton ``NotImplemented`` if it does
1227 not implement the operation for a given pair of arguments. By convention,
1228 ``False`` and ``True`` are returned for a successful comparison. However, these
1229 methods can return any value, so if the comparison operator is used in a Boolean
1230 context (e.g., in the condition of an ``if`` statement), Python will call
1231 :func:`bool` on the value to determine if the result is true or false.
1232
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001233 There are no implied relationships among the comparison operators. The truth
1234 of ``x==y`` does not imply that ``x!=y`` is false. Accordingly, when
1235 defining :meth:`__eq__`, one should also define :meth:`__ne__` so that the
1236 operators will behave as expected. See the paragraph on :meth:`__hash__` for
1237 some important notes on creating :term:`hashable` objects which support
1238 custom comparison operations and are usable as dictionary keys.
Georg Brandl116aa622007-08-15 14:28:22 +00001239
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001240 There are no swapped-argument versions of these methods (to be used when the
1241 left argument does not support the operation but the right argument does);
1242 rather, :meth:`__lt__` and :meth:`__gt__` are each other's reflection,
Georg Brandl116aa622007-08-15 14:28:22 +00001243 :meth:`__le__` and :meth:`__ge__` are each other's reflection, and
1244 :meth:`__eq__` and :meth:`__ne__` are their own reflection.
1245
1246 Arguments to rich comparison methods are never coerced.
1247
1248
1249.. method:: object.__cmp__(self, other)
1250
1251 .. index::
1252 builtin: cmp
1253 single: comparisons
1254
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001255 Called by comparison operations if rich comparison (see above) is not
1256 defined. Should return a negative integer if ``self < other``, zero if
1257 ``self == other``, a positive integer if ``self > other``. If no
1258 :meth:`__cmp__`, :meth:`__eq__` or :meth:`__ne__` operation is defined, class
1259 instances are compared by object identity ("address"). See also the
1260 description of :meth:`__hash__` for some important notes on creating
1261 :term:`hashable` objects which support custom comparison operations and are
Georg Brandldb629672007-11-03 08:44:43 +00001262 usable as dictionary keys.
Georg Brandl116aa622007-08-15 14:28:22 +00001263
1264
Georg Brandl116aa622007-08-15 14:28:22 +00001265.. method:: object.__hash__(self)
1266
1267 .. index::
1268 object: dictionary
1269 builtin: hash
Georg Brandl16174572007-09-01 12:38:06 +00001270 single: __cmp__() (object method)
Georg Brandl116aa622007-08-15 14:28:22 +00001271
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001272 Called for the key object for dictionary operations, and by the built-in
1273 function :func:`hash`. Should return an integer usable as a hash value
Georg Brandl116aa622007-08-15 14:28:22 +00001274 for dictionary operations. The only required property is that objects which
1275 compare equal have the same hash value; it is advised to somehow mix together
1276 (e.g., using exclusive or) the hash values for the components of the object that
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001277 also play a part in comparison of objects.
Georg Brandl116aa622007-08-15 14:28:22 +00001278
Georg Brandldb629672007-11-03 08:44:43 +00001279 If a class does not define a :meth:`__cmp__` or :meth:`__eq__` method it
1280 should not define a :meth:`__hash__` operation either; if it defines
1281 :meth:`__cmp__` or :meth:`__eq__` but not :meth:`__hash__`, its instances
1282 will not be usable as dictionary keys. If a class defines mutable objects
1283 and implements a :meth:`__cmp__` or :meth:`__eq__` method, it should not
1284 implement :meth:`__hash__`, since the dictionary implementation requires that
1285 a key's hash value is immutable (if the object's hash value changes, it will
1286 be in the wrong hash bucket).
1287
1288 User-defined classes have :meth:`__cmp__` and :meth:`__hash__` methods
1289 by default; with them, all objects compare unequal and ``x.__hash__()``
1290 returns ``id(x)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001291
1292
1293.. method:: object.__bool__(self)
1294
1295 .. index:: single: __len__() (mapping object method)
1296
1297 Called to implement truth value testing, and the built-in operation ``bool()``;
1298 should return ``False`` or ``True``. When this method is not defined,
1299 :meth:`__len__` is called, if it is defined (see below) and ``True`` is returned
1300 when the length is not zero. If a class defines neither :meth:`__len__` nor
1301 :meth:`__bool__`, all its instances are considered true.
1302
1303
Georg Brandl116aa622007-08-15 14:28:22 +00001304.. _attribute-access:
1305
1306Customizing attribute access
1307----------------------------
1308
1309The following methods can be defined to customize the meaning of attribute
1310access (use of, assignment to, or deletion of ``x.name``) for class instances.
1311
Georg Brandl85eb8c12007-08-31 16:33:38 +00001312.. XXX explain how descriptors interfere here!
1313
Georg Brandl116aa622007-08-15 14:28:22 +00001314
1315.. method:: object.__getattr__(self, name)
1316
1317 Called when an attribute lookup has not found the attribute in the usual places
1318 (i.e. it is not an instance attribute nor is it found in the class tree for
1319 ``self``). ``name`` is the attribute name. This method should return the
1320 (computed) attribute value or raise an :exc:`AttributeError` exception.
1321
Georg Brandl116aa622007-08-15 14:28:22 +00001322 Note that if the attribute is found through the normal mechanism,
1323 :meth:`__getattr__` is not called. (This is an intentional asymmetry between
1324 :meth:`__getattr__` and :meth:`__setattr__`.) This is done both for efficiency
1325 reasons and because otherwise :meth:`__setattr__` would have no way to access
1326 other attributes of the instance. Note that at least for instance variables,
1327 you can fake total control by not inserting any values in the instance attribute
1328 dictionary (but instead inserting them in another object). See the
Georg Brandl85eb8c12007-08-31 16:33:38 +00001329 :meth:`__getattribute__` method below for a way to actually get total control
1330 over attribute access.
Georg Brandl116aa622007-08-15 14:28:22 +00001331
1332
1333.. method:: object.__getattribute__(self, name)
1334
1335 Called unconditionally to implement attribute accesses for instances of the
1336 class. If the class also defines :meth:`__getattr__`, the latter will not be
1337 called unless :meth:`__getattribute__` either calls it explicitly or raises an
1338 :exc:`AttributeError`. This method should return the (computed) attribute value
1339 or raise an :exc:`AttributeError` exception. In order to avoid infinite
1340 recursion in this method, its implementation should always call the base class
1341 method with the same name to access any attributes it needs, for example,
1342 ``object.__getattribute__(self, name)``.
1343
1344
Georg Brandl85eb8c12007-08-31 16:33:38 +00001345.. method:: object.__setattr__(self, name, value)
1346
1347 Called when an attribute assignment is attempted. This is called instead of
1348 the normal mechanism (i.e. store the value in the instance dictionary).
1349 *name* is the attribute name, *value* is the value to be assigned to it.
1350
1351 If :meth:`__setattr__` wants to assign to an instance attribute, it should
1352 call the base class method with the same name, for example,
1353 ``object.__setattr__(self, name, value)``.
1354
1355
1356.. method:: object.__delattr__(self, name)
1357
1358 Like :meth:`__setattr__` but for attribute deletion instead of assignment. This
1359 should only be implemented if ``del obj.name`` is meaningful for the object.
1360
1361
Georg Brandl116aa622007-08-15 14:28:22 +00001362.. _descriptors:
1363
1364Implementing Descriptors
1365^^^^^^^^^^^^^^^^^^^^^^^^
1366
1367The following methods only apply when an instance of the class containing the
1368method (a so-called *descriptor* class) appears in the class dictionary of
Georg Brandl85eb8c12007-08-31 16:33:38 +00001369another class, known as the *owner* class. In the examples below, "the
Georg Brandl116aa622007-08-15 14:28:22 +00001370attribute" refers to the attribute whose name is the key of the property in the
Georg Brandl85eb8c12007-08-31 16:33:38 +00001371owner class' :attr:`__dict__`.
Georg Brandl116aa622007-08-15 14:28:22 +00001372
1373
1374.. method:: object.__get__(self, instance, owner)
1375
1376 Called to get the attribute of the owner class (class attribute access) or of an
1377 instance of that class (instance attribute access). *owner* is always the owner
1378 class, while *instance* is the instance that the attribute was accessed through,
1379 or ``None`` when the attribute is accessed through the *owner*. This method
1380 should return the (computed) attribute value or raise an :exc:`AttributeError`
1381 exception.
1382
1383
1384.. method:: object.__set__(self, instance, value)
1385
1386 Called to set the attribute on an instance *instance* of the owner class to a
1387 new value, *value*.
1388
1389
1390.. method:: object.__delete__(self, instance)
1391
1392 Called to delete the attribute on an instance *instance* of the owner class.
1393
1394
1395.. _descriptor-invocation:
1396
1397Invoking Descriptors
1398^^^^^^^^^^^^^^^^^^^^
1399
1400In general, a descriptor is an object attribute with "binding behavior", one
1401whose attribute access has been overridden by methods in the descriptor
1402protocol: :meth:`__get__`, :meth:`__set__`, and :meth:`__delete__`. If any of
1403those methods are defined for an object, it is said to be a descriptor.
1404
1405The default behavior for attribute access is to get, set, or delete the
1406attribute from an object's dictionary. For instance, ``a.x`` has a lookup chain
1407starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and
1408continuing through the base classes of ``type(a)`` excluding metaclasses.
1409
1410However, if the looked-up value is an object defining one of the descriptor
1411methods, then Python may override the default behavior and invoke the descriptor
1412method instead. Where this occurs in the precedence chain depends on which
1413descriptor methods were defined and how they were called. Note that descriptors
1414are only invoked for new style objects or classes (ones that subclass
1415:class:`object()` or :class:`type()`).
1416
1417The starting point for descriptor invocation is a binding, ``a.x``. How the
1418arguments are assembled depends on ``a``:
1419
1420Direct Call
1421 The simplest and least common call is when user code directly invokes a
1422 descriptor method: ``x.__get__(a)``.
1423
1424Instance Binding
Georg Brandl85eb8c12007-08-31 16:33:38 +00001425 If binding to an object instance, ``a.x`` is transformed into the call:
Georg Brandl116aa622007-08-15 14:28:22 +00001426 ``type(a).__dict__['x'].__get__(a, type(a))``.
1427
1428Class Binding
Georg Brandl85eb8c12007-08-31 16:33:38 +00001429 If binding to a class, ``A.x`` is transformed into the call:
Georg Brandl116aa622007-08-15 14:28:22 +00001430 ``A.__dict__['x'].__get__(None, A)``.
1431
1432Super Binding
1433 If ``a`` is an instance of :class:`super`, then the binding ``super(B,
1434 obj).m()`` searches ``obj.__class__.__mro__`` for the base class ``A``
1435 immediately preceding ``B`` and then invokes the descriptor with the call:
1436 ``A.__dict__['m'].__get__(obj, A)``.
1437
1438For instance bindings, the precedence of descriptor invocation depends on the
Guido van Rossum04110fb2007-08-24 16:32:05 +00001439which descriptor methods are defined. Normally, data descriptors define both
1440:meth:`__get__` and :meth:`__set__`, while non-data descriptors have just the
Georg Brandl116aa622007-08-15 14:28:22 +00001441:meth:`__get__` method. Data descriptors always override a redefinition in an
1442instance dictionary. In contrast, non-data descriptors can be overridden by
Guido van Rossum04110fb2007-08-24 16:32:05 +00001443instances. [#]_
Georg Brandl116aa622007-08-15 14:28:22 +00001444
1445Python methods (including :func:`staticmethod` and :func:`classmethod`) are
1446implemented as non-data descriptors. Accordingly, instances can redefine and
1447override methods. This allows individual instances to acquire behaviors that
1448differ from other instances of the same class.
1449
1450The :func:`property` function is implemented as a data descriptor. Accordingly,
1451instances cannot override the behavior of a property.
1452
1453
1454.. _slots:
1455
1456__slots__
1457^^^^^^^^^
1458
Georg Brandl85eb8c12007-08-31 16:33:38 +00001459By default, instances of classes have a dictionary for attribute storage. This
1460wastes space for objects having very few instance variables. The space
1461consumption can become acute when creating large numbers of instances.
Georg Brandl116aa622007-08-15 14:28:22 +00001462
Georg Brandl85eb8c12007-08-31 16:33:38 +00001463The default can be overridden by defining *__slots__* in a class definition.
1464The *__slots__* declaration takes a sequence of instance variables and reserves
1465just enough space in each instance to hold a value for each variable. Space is
1466saved because *__dict__* is not created for each instance.
Georg Brandl116aa622007-08-15 14:28:22 +00001467
1468
Georg Brandl85eb8c12007-08-31 16:33:38 +00001469.. data:: object.__slots__
Georg Brandl116aa622007-08-15 14:28:22 +00001470
Georg Brandl85eb8c12007-08-31 16:33:38 +00001471 This class variable can be assigned a string, iterable, or sequence of
1472 strings with variable names used by instances. If defined in a new-style
1473 class, *__slots__* reserves space for the declared variables and prevents the
1474 automatic creation of *__dict__* and *__weakref__* for each instance.
Georg Brandl116aa622007-08-15 14:28:22 +00001475
Georg Brandl116aa622007-08-15 14:28:22 +00001476
1477Notes on using *__slots__*
Georg Brandl16174572007-09-01 12:38:06 +00001478""""""""""""""""""""""""""
Georg Brandl116aa622007-08-15 14:28:22 +00001479
1480* Without a *__dict__* variable, instances cannot be assigned new variables not
1481 listed in the *__slots__* definition. Attempts to assign to an unlisted
1482 variable name raises :exc:`AttributeError`. If dynamic assignment of new
Georg Brandl85eb8c12007-08-31 16:33:38 +00001483 variables is desired, then add ``'__dict__'`` to the sequence of strings in
1484 the *__slots__* declaration.
Georg Brandl116aa622007-08-15 14:28:22 +00001485
Georg Brandl116aa622007-08-15 14:28:22 +00001486* Without a *__weakref__* variable for each instance, classes defining
1487 *__slots__* do not support weak references to its instances. If weak reference
1488 support is needed, then add ``'__weakref__'`` to the sequence of strings in the
1489 *__slots__* declaration.
1490
Georg Brandl116aa622007-08-15 14:28:22 +00001491* *__slots__* are implemented at the class level by creating descriptors
1492 (:ref:`descriptors`) for each variable name. As a result, class attributes
1493 cannot be used to set default values for instance variables defined by
1494 *__slots__*; otherwise, the class attribute would overwrite the descriptor
1495 assignment.
1496
1497* If a class defines a slot also defined in a base class, the instance variable
1498 defined by the base class slot is inaccessible (except by retrieving its
1499 descriptor directly from the base class). This renders the meaning of the
1500 program undefined. In the future, a check may be added to prevent this.
1501
1502* The action of a *__slots__* declaration is limited to the class where it is
1503 defined. As a result, subclasses will have a *__dict__* unless they also define
1504 *__slots__*.
1505
1506* *__slots__* do not work for classes derived from "variable-length" built-in
1507 types such as :class:`long`, :class:`str` and :class:`tuple`.
1508
1509* Any non-string iterable may be assigned to *__slots__*. Mappings may also be
1510 used; however, in the future, special meaning may be assigned to the values
1511 corresponding to each key.
1512
1513* *__class__* assignment works only if both classes have the same *__slots__*.
1514
Georg Brandl116aa622007-08-15 14:28:22 +00001515
1516.. _metaclasses:
1517
1518Customizing class creation
1519--------------------------
1520
Georg Brandl85eb8c12007-08-31 16:33:38 +00001521By default, classes are constructed using :func:`type`. A class definition is
1522read into a separate namespace and the value of class name is bound to the
1523result of ``type(name, bases, dict)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001524
1525When the class definition is read, if *__metaclass__* is defined then the
1526callable assigned to it will be called instead of :func:`type`. The allows
1527classes or functions to be written which monitor or alter the class creation
1528process:
1529
1530* Modifying the class dictionary prior to the class being created.
1531
1532* Returning an instance of another class -- essentially performing the role of a
1533 factory function.
1534
Georg Brandl85eb8c12007-08-31 16:33:38 +00001535.. XXX needs to be updated for the "new metaclasses" PEP
Georg Brandl116aa622007-08-15 14:28:22 +00001536.. data:: __metaclass__
1537
1538 This variable can be any callable accepting arguments for ``name``, ``bases``,
1539 and ``dict``. Upon class creation, the callable is used instead of the built-in
1540 :func:`type`.
1541
Georg Brandl116aa622007-08-15 14:28:22 +00001542The appropriate metaclass is determined by the following precedence rules:
1543
1544* If ``dict['__metaclass__']`` exists, it is used.
1545
1546* Otherwise, if there is at least one base class, its metaclass is used (this
1547 looks for a *__class__* attribute first and if not found, uses its type).
1548
1549* Otherwise, if a global variable named __metaclass__ exists, it is used.
1550
Georg Brandl85eb8c12007-08-31 16:33:38 +00001551* Otherwise, the default metaclass (:class:`type`) is used.
Georg Brandl116aa622007-08-15 14:28:22 +00001552
1553The potential uses for metaclasses are boundless. Some ideas that have been
1554explored including logging, interface checking, automatic delegation, automatic
1555property creation, proxies, frameworks, and automatic resource
1556locking/synchronization.
1557
1558
1559.. _callable-types:
1560
1561Emulating callable objects
1562--------------------------
1563
1564
1565.. method:: object.__call__(self[, args...])
1566
1567 .. index:: pair: call; instance
1568
1569 Called when the instance is "called" as a function; if this method is defined,
1570 ``x(arg1, arg2, ...)`` is a shorthand for ``x.__call__(arg1, arg2, ...)``.
1571
1572
1573.. _sequence-types:
1574
1575Emulating container types
1576-------------------------
1577
1578The following methods can be defined to implement container objects. Containers
1579usually are sequences (such as lists or tuples) or mappings (like dictionaries),
1580but can represent other containers as well. The first set of methods is used
1581either to emulate a sequence or to emulate a mapping; the difference is that for
1582a sequence, the allowable keys should be the integers *k* for which ``0 <= k <
1583N`` where *N* is the length of the sequence, or slice objects, which define a
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001584range of items. It is also recommended that mappings provide the methods
Collin Winter19ab2bd2007-09-10 00:20:46 +00001585:meth:`keys`, :meth:`values`, :meth:`items`, :meth:`get`,
Fred Drake2e748782007-09-04 17:33:11 +00001586:meth:`clear`, :meth:`setdefault`,
1587:meth:`pop`, :meth:`popitem`, :meth:`copy`, and
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001588:meth:`update` behaving similar to those for Python's standard dictionary
1589objects. The :mod:`UserDict` module provides a :class:`DictMixin` class to help
1590create those methods from a base set of :meth:`__getitem__`,
1591:meth:`__setitem__`, :meth:`__delitem__`, and :meth:`keys`. Mutable sequences
1592should provide methods :meth:`append`, :meth:`count`, :meth:`index`,
1593:meth:`extend`, :meth:`insert`, :meth:`pop`, :meth:`remove`, :meth:`reverse` and
1594:meth:`sort`, like Python standard list objects. Finally, sequence types should
1595implement addition (meaning concatenation) and multiplication (meaning
1596repetition) by defining the methods :meth:`__add__`, :meth:`__radd__`,
1597:meth:`__iadd__`, :meth:`__mul__`, :meth:`__rmul__` and :meth:`__imul__`
1598described below; they should not define other numerical operators. It is
1599recommended that both mappings and sequences implement the :meth:`__contains__`
1600method to allow efficient use of the ``in`` operator; for mappings, ``in``
Collin Winter19ab2bd2007-09-10 00:20:46 +00001601should search the mapping's keys; for sequences, it should search
1602through the values. It is further recommended that both mappings and sequences
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001603implement the :meth:`__iter__` method to allow efficient iteration through the
1604container; for mappings, :meth:`__iter__` should be the same as
Fred Drake2e748782007-09-04 17:33:11 +00001605:meth:`keys`; for sequences, it should iterate through the values.
Georg Brandl116aa622007-08-15 14:28:22 +00001606
1607.. method:: object.__len__(self)
1608
1609 .. index::
1610 builtin: len
1611 single: __bool__() (object method)
1612
1613 Called to implement the built-in function :func:`len`. Should return the length
1614 of the object, an integer ``>=`` 0. Also, an object that doesn't define a
1615 :meth:`__bool__` method and whose :meth:`__len__` method returns zero is
1616 considered to be false in a Boolean context.
1617
1618
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001619.. note::
1620
1621 Slicing is done exclusively with the following three methods. A call like ::
1622
1623 a[1:2] = b
1624
1625 is translated to ::
1626
1627 a[slice(1, 2, None)] = b
1628
1629 and so forth. Missing slice items are always filled in with ``None``.
1630
1631
Georg Brandl116aa622007-08-15 14:28:22 +00001632.. method:: object.__getitem__(self, key)
1633
1634 .. index:: object: slice
1635
1636 Called to implement evaluation of ``self[key]``. For sequence types, the
1637 accepted keys should be integers and slice objects. Note that the special
1638 interpretation of negative indexes (if the class wishes to emulate a sequence
1639 type) is up to the :meth:`__getitem__` method. If *key* is of an inappropriate
1640 type, :exc:`TypeError` may be raised; if of a value outside the set of indexes
1641 for the sequence (after any special interpretation of negative values),
1642 :exc:`IndexError` should be raised. For mapping types, if *key* is missing (not
1643 in the container), :exc:`KeyError` should be raised.
1644
1645 .. note::
1646
1647 :keyword:`for` loops expect that an :exc:`IndexError` will be raised for illegal
1648 indexes to allow proper detection of the end of the sequence.
1649
1650
1651.. method:: object.__setitem__(self, key, value)
1652
1653 Called to implement assignment to ``self[key]``. Same note as for
1654 :meth:`__getitem__`. This should only be implemented for mappings if the
1655 objects support changes to the values for keys, or if new keys can be added, or
1656 for sequences if elements can be replaced. The same exceptions should be raised
1657 for improper *key* values as for the :meth:`__getitem__` method.
1658
1659
1660.. method:: object.__delitem__(self, key)
1661
1662 Called to implement deletion of ``self[key]``. Same note as for
1663 :meth:`__getitem__`. This should only be implemented for mappings if the
1664 objects support removal of keys, or for sequences if elements can be removed
1665 from the sequence. The same exceptions should be raised for improper *key*
1666 values as for the :meth:`__getitem__` method.
1667
1668
1669.. method:: object.__iter__(self)
1670
1671 This method is called when an iterator is required for a container. This method
1672 should return a new iterator object that can iterate over all the objects in the
1673 container. For mappings, it should iterate over the keys of the container, and
Fred Drake2e748782007-09-04 17:33:11 +00001674 should also be made available as the method :meth:`keys`.
Georg Brandl116aa622007-08-15 14:28:22 +00001675
1676 Iterator objects also need to implement this method; they are required to return
1677 themselves. For more information on iterator objects, see :ref:`typeiter`.
1678
1679The membership test operators (:keyword:`in` and :keyword:`not in`) are normally
1680implemented as an iteration through a sequence. However, container objects can
1681supply the following special method with a more efficient implementation, which
1682also does not require the object be a sequence.
1683
1684
1685.. method:: object.__contains__(self, item)
1686
1687 Called to implement membership test operators. Should return true if *item* is
1688 in *self*, false otherwise. For mapping objects, this should consider the keys
1689 of the mapping rather than the values or the key-item pairs.
1690
1691
Georg Brandl116aa622007-08-15 14:28:22 +00001692.. _numeric-types:
1693
1694Emulating numeric types
1695-----------------------
1696
1697The following methods can be defined to emulate numeric objects. Methods
1698corresponding to operations that are not supported by the particular kind of
1699number implemented (e.g., bitwise operations for non-integral numbers) should be
1700left undefined.
1701
1702
1703.. method:: object.__add__(self, other)
1704 object.__sub__(self, other)
1705 object.__mul__(self, other)
1706 object.__floordiv__(self, other)
1707 object.__mod__(self, other)
1708 object.__divmod__(self, other)
1709 object.__pow__(self, other[, modulo])
1710 object.__lshift__(self, other)
1711 object.__rshift__(self, other)
1712 object.__and__(self, other)
1713 object.__xor__(self, other)
1714 object.__or__(self, other)
1715
1716 .. index::
1717 builtin: divmod
1718 builtin: pow
1719 builtin: pow
1720
1721 These methods are called to implement the binary arithmetic operations (``+``,
1722 ``-``, ``*``, ``//``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``,
1723 ``>>``, ``&``, ``^``, ``|``). For instance, to evaluate the expression
1724 *x*``+``*y*, where *x* is an instance of a class that has an :meth:`__add__`
1725 method, ``x.__add__(y)`` is called. The :meth:`__divmod__` method should be the
1726 equivalent to using :meth:`__floordiv__` and :meth:`__mod__`; it should not be
1727 related to :meth:`__truediv__` (described below). Note that :meth:`__pow__`
1728 should be defined to accept an optional third argument if the ternary version of
1729 the built-in :func:`pow` function is to be supported.
1730
1731 If one of those methods does not support the operation with the supplied
1732 arguments, it should return ``NotImplemented``.
1733
1734
1735.. method:: object.__div__(self, other)
1736 object.__truediv__(self, other)
1737
1738 The division operator (``/``) is implemented by these methods. The
1739 :meth:`__truediv__` method is used when ``__future__.division`` is in effect,
1740 otherwise :meth:`__div__` is used. If only one of these two methods is defined,
1741 the object will not support division in the alternate context; :exc:`TypeError`
1742 will be raised instead.
1743
1744
1745.. method:: object.__radd__(self, other)
1746 object.__rsub__(self, other)
1747 object.__rmul__(self, other)
1748 object.__rdiv__(self, other)
1749 object.__rtruediv__(self, other)
1750 object.__rfloordiv__(self, other)
1751 object.__rmod__(self, other)
1752 object.__rdivmod__(self, other)
1753 object.__rpow__(self, other)
1754 object.__rlshift__(self, other)
1755 object.__rrshift__(self, other)
1756 object.__rand__(self, other)
1757 object.__rxor__(self, other)
1758 object.__ror__(self, other)
1759
1760 .. index::
1761 builtin: divmod
1762 builtin: pow
1763
1764 These methods are called to implement the binary arithmetic operations (``+``,
1765 ``-``, ``*``, ``/``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``, ``>>``,
1766 ``&``, ``^``, ``|``) with reflected (swapped) operands. These functions are
1767 only called if the left operand does not support the corresponding operation and
1768 the operands are of different types. [#]_ For instance, to evaluate the
1769 expression *x*``-``*y*, where *y* is an instance of a class that has an
1770 :meth:`__rsub__` method, ``y.__rsub__(x)`` is called if ``x.__sub__(y)`` returns
1771 *NotImplemented*.
1772
1773 .. index:: builtin: pow
1774
1775 Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the
1776 coercion rules would become too complicated).
1777
1778 .. note::
1779
1780 If the right operand's type is a subclass of the left operand's type and that
1781 subclass provides the reflected method for the operation, this method will be
1782 called before the left operand's non-reflected method. This behavior allows
1783 subclasses to override their ancestors' operations.
1784
1785
1786.. method:: object.__iadd__(self, other)
1787 object.__isub__(self, other)
1788 object.__imul__(self, other)
1789 object.__idiv__(self, other)
1790 object.__itruediv__(self, other)
1791 object.__ifloordiv__(self, other)
1792 object.__imod__(self, other)
1793 object.__ipow__(self, other[, modulo])
1794 object.__ilshift__(self, other)
1795 object.__irshift__(self, other)
1796 object.__iand__(self, other)
1797 object.__ixor__(self, other)
1798 object.__ior__(self, other)
1799
1800 These methods are called to implement the augmented arithmetic operations
1801 (``+=``, ``-=``, ``*=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, ``>>=``,
1802 ``&=``, ``^=``, ``|=``). These methods should attempt to do the operation
1803 in-place (modifying *self*) and return the result (which could be, but does
1804 not have to be, *self*). If a specific method is not defined, the augmented
1805 operation falls back to the normal methods. For instance, to evaluate the
1806 expression *x*``+=``*y*, where *x* is an instance of a class that has an
1807 :meth:`__iadd__` method, ``x.__iadd__(y)`` is called. If *x* is an instance
1808 of a class that does not define a :meth:`__iadd__` method, ``x.__add__(y)``
1809 and ``y.__radd__(x)`` are considered, as with the evaluation of *x*``+``*y*.
1810
1811
1812.. method:: object.__neg__(self)
1813 object.__pos__(self)
1814 object.__abs__(self)
1815 object.__invert__(self)
1816
1817 .. index:: builtin: abs
1818
1819 Called to implement the unary arithmetic operations (``-``, ``+``, :func:`abs`
1820 and ``~``).
1821
1822
1823.. method:: object.__complex__(self)
1824 object.__int__(self)
1825 object.__long__(self)
1826 object.__float__(self)
1827
1828 .. index::
1829 builtin: complex
1830 builtin: int
1831 builtin: long
1832 builtin: float
1833
1834 Called to implement the built-in functions :func:`complex`, :func:`int`,
1835 :func:`long`, and :func:`float`. Should return a value of the appropriate type.
1836
1837
1838.. method:: object.__index__(self)
1839
1840 Called to implement :func:`operator.index`. Also called whenever Python needs
1841 an integer object (such as in slicing, or in the built-in :func:`bin`,
1842 :func:`hex` and :func:`oct` functions). Must return an integer (int or long).
1843
Georg Brandl116aa622007-08-15 14:28:22 +00001844
1845.. _context-managers:
1846
1847With Statement Context Managers
1848-------------------------------
1849
Georg Brandl116aa622007-08-15 14:28:22 +00001850A :dfn:`context manager` is an object that defines the runtime context to be
1851established when executing a :keyword:`with` statement. The context manager
1852handles the entry into, and the exit from, the desired runtime context for the
1853execution of the block of code. Context managers are normally invoked using the
1854:keyword:`with` statement (described in section :ref:`with`), but can also be
1855used by directly invoking their methods.
1856
1857.. index::
1858 statement: with
1859 single: context manager
1860
1861Typical uses of context managers include saving and restoring various kinds of
1862global state, locking and unlocking resources, closing opened files, etc.
1863
1864For more information on context managers, see :ref:`typecontextmanager`.
1865
1866
1867.. method:: object.__enter__(self)
1868
1869 Enter the runtime context related to this object. The :keyword:`with` statement
1870 will bind this method's return value to the target(s) specified in the
1871 :keyword:`as` clause of the statement, if any.
1872
1873
1874.. method:: object.__exit__(self, exc_type, exc_value, traceback)
1875
1876 Exit the runtime context related to this object. The parameters describe the
1877 exception that caused the context to be exited. If the context was exited
1878 without an exception, all three arguments will be :const:`None`.
1879
1880 If an exception is supplied, and the method wishes to suppress the exception
1881 (i.e., prevent it from being propagated), it should return a true value.
1882 Otherwise, the exception will be processed normally upon exit from this method.
1883
1884 Note that :meth:`__exit__` methods should not reraise the passed-in exception;
1885 this is the caller's responsibility.
1886
1887
1888.. seealso::
1889
1890 :pep:`0343` - The "with" statement
1891 The specification, background, and examples for the Python :keyword:`with`
1892 statement.
1893
1894.. rubric:: Footnotes
1895
Guido van Rossum04110fb2007-08-24 16:32:05 +00001896.. [#] A descriptor can define any combination of :meth:`__get__`,
1897 :meth:`__set__` and :meth:`__delete__`. If it does not define :meth:`__get__`,
1898 then accessing the attribute even on an instance will return the descriptor
1899 object itself. If the descriptor defines :meth:`__set__` and/or
1900 :meth:`__delete__`, it is a data descriptor; if it defines neither, it is a
1901 non-data descriptor.
1902
Georg Brandl116aa622007-08-15 14:28:22 +00001903.. [#] For operands of the same type, it is assumed that if the non-reflected method
1904 (such as :meth:`__add__`) fails the operation is not supported, which is why the
1905 reflected method is not called.
1906