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