blob: 3ebc973d0968d7a964e823c5b040060ba3f8ab4d [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
391 These represent an immutable set. They are created by the built-in
392 :func:`frozenset` constructor. As a frozenset is immutable and hashable, it can
393 be used again as an element of another set, or as a dictionary key.
394
395 .. % Set types
396
397Mappings
398 .. index::
399 builtin: len
400 single: subscription
401 object: mapping
402
403 These represent finite sets of objects indexed by arbitrary index sets. The
404 subscript notation ``a[k]`` selects the item indexed by ``k`` from the mapping
405 ``a``; this can be used in expressions and as the target of assignments or
406 :keyword:`del` statements. The built-in function :func:`len` returns the number
407 of items in a mapping.
408
409 There is currently a single intrinsic mapping type:
410
411 Dictionaries
412 .. index:: object: dictionary
413
414 These represent finite sets of objects indexed by nearly arbitrary values. The
415 only types of values not acceptable as keys are values containing lists or
416 dictionaries or other mutable types that are compared by value rather than by
417 object identity, the reason being that the efficient implementation of
418 dictionaries requires a key's hash value to remain constant. Numeric types used
419 for keys obey the normal rules for numeric comparison: if two numbers compare
420 equal (e.g., ``1`` and ``1.0``) then they can be used interchangeably to index
421 the same dictionary entry.
422
423 Dictionaries are mutable; they can be created by the ``{...}`` notation (see
424 section :ref:`dict`).
425
426 .. index::
427 module: dbm
428 module: gdbm
429 module: bsddb
430
431 The extension modules :mod:`dbm`, :mod:`gdbm`, and :mod:`bsddb` provide
432 additional examples of mapping types.
433
434 .. % Mapping types
435
436Callable types
437 .. index::
438 object: callable
439 pair: function; call
440 single: invocation
441 pair: function; argument
442
443 These are the types to which the function call operation (see section
444 :ref:`calls`) can be applied:
445
446 User-defined functions
447 .. index::
448 pair: user-defined; function
449 object: function
450 object: user-defined function
451
452 A user-defined function object is created by a function definition (see
453 section :ref:`function`). It should be called with an argument list
454 containing the same number of items as the function's formal parameter
455 list.
456
457 Special attributes:
458
459 +-------------------------+-------------------------------+-----------+
460 | Attribute | Meaning | |
461 +=========================+===============================+===========+
462 | :attr:`__doc__` | The function's documentation | Writable |
463 | | string, or ``None`` if | |
464 | | unavailable | |
465 +-------------------------+-------------------------------+-----------+
466 | :attr:`__name__` | The function's name | Writable |
467 +-------------------------+-------------------------------+-----------+
468 | :attr:`__module__` | The name of the module the | Writable |
469 | | function was defined in, or | |
470 | | ``None`` if unavailable. | |
471 +-------------------------+-------------------------------+-----------+
472 | :attr:`__defaults__` | A tuple containing default | Writable |
473 | | argument values for those | |
474 | | arguments that have defaults, | |
475 | | or ``None`` if no arguments | |
476 | | have a default value | |
477 +-------------------------+-------------------------------+-----------+
478 | :attr:`__code__` | The code object representing | Writable |
479 | | the compiled function body. | |
480 +-------------------------+-------------------------------+-----------+
481 | :attr:`__globals__` | A reference to the dictionary | Read-only |
482 | | that holds the function's | |
483 | | global variables --- the | |
484 | | global namespace of the | |
485 | | module in which the function | |
486 | | was defined. | |
487 +-------------------------+-------------------------------+-----------+
488 | :attr:`__dict__` | The namespace supporting | Writable |
489 | | arbitrary function | |
490 | | attributes. | |
491 +-------------------------+-------------------------------+-----------+
492 | :attr:`__closure__` | ``None`` or a tuple of cells | Read-only |
493 | | that contain bindings for the | |
494 | | function's free variables. | |
495 +-------------------------+-------------------------------+-----------+
496 | :attr:`__annotations__` | A dict containing annotations | Writable |
497 | | of parameters. The keys of | |
498 | | the dict are the parameter | |
499 | | names, or ``'return'`` for | |
500 | | the return annotation, if | |
501 | | provided. | |
502 +-------------------------+-------------------------------+-----------+
503 | :attr:`__kwdefaults__` | A dict containing defaults | Writable |
504 | | for keyword-only parameters. | |
505 +-------------------------+-------------------------------+-----------+
506
507 Most of the attributes labelled "Writable" check the type of the assigned value.
508
Georg Brandl116aa622007-08-15 14:28:22 +0000509 Function objects also support getting and setting arbitrary attributes, which
510 can be used, for example, to attach metadata to functions. Regular attribute
511 dot-notation is used to get and set such attributes. *Note that the current
512 implementation only supports function attributes on user-defined functions.
513 Function attributes on built-in functions may be supported in the future.*
514
515 Additional information about a function's definition can be retrieved from its
516 code object; see the description of internal types below.
517
518 .. index::
519 single: __doc__ (function attribute)
520 single: __name__ (function attribute)
521 single: __module__ (function attribute)
522 single: __dict__ (function attribute)
523 single: __defaults__ (function attribute)
524 single: __closure__ (function attribute)
525 single: __code__ (function attribute)
526 single: __globals__ (function attribute)
527 single: __annotations__ (function attribute)
528 single: __kwdefaults__ (function attribute)
529 pair: global; namespace
530
531 User-defined methods
532 .. index::
533 object: method
534 object: user-defined method
535 pair: user-defined; method
536
537 A user-defined method object combines a class, a class instance (or ``None``)
538 and any callable object (normally a user-defined function).
539
540 Special read-only attributes: :attr:`im_self` is the class instance object,
541 :attr:`im_func` is the function object; :attr:`im_class` is the class of
542 :attr:`im_self` for bound methods or the class that asked for the method for
543 unbound methods; :attr:`__doc__` is the method's documentation (same as
544 ``im_func.__doc__``); :attr:`__name__` is the method name (same as
545 ``im_func.__name__``); :attr:`__module__` is the name of the module the method
546 was defined in, or ``None`` if unavailable.
547
Georg Brandl116aa622007-08-15 14:28:22 +0000548 .. index::
549 single: __doc__ (method attribute)
550 single: __name__ (method attribute)
551 single: __module__ (method attribute)
552 single: im_func (method attribute)
553 single: im_self (method attribute)
554
555 Methods also support accessing (but not setting) the arbitrary function
556 attributes on the underlying function object.
557
558 User-defined method objects may be created when getting an attribute of a class
559 (perhaps via an instance of that class), if that attribute is a user-defined
560 function object, an unbound user-defined method object, or a class method
561 object. When the attribute is a user-defined method object, a new method object
562 is only created if the class from which it is being retrieved is the same as, or
563 a derived class of, the class stored in the original method object; otherwise,
564 the original method object is used as it is.
565
566 .. index::
567 single: im_class (method attribute)
568 single: im_func (method attribute)
569 single: im_self (method attribute)
570
571 When a user-defined method object is created by retrieving a user-defined
572 function object from a class, its :attr:`im_self` attribute is ``None``
573 and the method object is said to be unbound. When one is created by
574 retrieving a user-defined function object from a class via one of its
575 instances, its :attr:`im_self` attribute is the instance, and the method
576 object is said to be bound. In either case, the new method's
577 :attr:`im_class` attribute is the class from which the retrieval takes
578 place, and its :attr:`im_func` attribute is the original function object.
579
580 .. index:: single: im_func (method attribute)
581
582 When a user-defined method object is created by retrieving another method object
583 from a class or instance, the behaviour is the same as for a function object,
584 except that the :attr:`im_func` attribute of the new instance is not the
585 original method object but its :attr:`im_func` attribute.
586
587 .. index::
588 single: im_class (method attribute)
589 single: im_func (method attribute)
590 single: im_self (method attribute)
591
592 When a user-defined method object is created by retrieving a class method object
593 from a class or instance, its :attr:`im_self` attribute is the class itself (the
594 same as the :attr:`im_class` attribute), and its :attr:`im_func` attribute is
595 the function object underlying the class method.
596
597 When an unbound user-defined method object is called, the underlying function
598 (:attr:`im_func`) is called, with the restriction that the first argument must
599 be an instance of the proper class (:attr:`im_class`) or of a derived class
600 thereof.
601
602 When a bound user-defined method object is called, the underlying function
603 (:attr:`im_func`) is called, inserting the class instance (:attr:`im_self`) in
604 front of the argument list. For instance, when :class:`C` is a class which
605 contains a definition for a function :meth:`f`, and ``x`` is an instance of
606 :class:`C`, calling ``x.f(1)`` is equivalent to calling ``C.f(x, 1)``.
607
608 When a user-defined method object is derived from a class method object, the
609 "class instance" stored in :attr:`im_self` will actually be the class itself, so
610 that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to calling ``f(C,1)``
611 where ``f`` is the underlying function.
612
613 Note that the transformation from function object to (unbound or bound) method
614 object happens each time the attribute is retrieved from the class or instance.
615 In some cases, a fruitful optimization is to assign the attribute to a local
616 variable and call that local variable. Also notice that this transformation only
617 happens for user-defined functions; other callable objects (and all non-callable
618 objects) are retrieved without transformation. It is also important to note
619 that user-defined functions which are attributes of a class instance are not
620 converted to bound methods; this *only* happens when the function is an
621 attribute of the class.
622
623 Generator functions
624 .. index::
625 single: generator; function
626 single: generator; iterator
627
628 A function or method which uses the :keyword:`yield` statement (see section
629 :ref:`yield`) is called a :dfn:`generator
630 function`. Such a function, when called, always returns an iterator object
631 which can be used to execute the body of the function: calling the iterator's
632 :meth:`__next__` method will cause the function to execute until it provides a
633 value using the :keyword:`yield` statement. When the function executes a
634 :keyword:`return` statement or falls off the end, a :exc:`StopIteration`
635 exception is raised and the iterator will have reached the end of the set of
636 values to be returned.
637
638 Built-in functions
639 .. index::
640 object: built-in function
641 object: function
642 pair: C; language
643
644 A built-in function object is a wrapper around a C function. Examples of
645 built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a
646 standard built-in module). The number and type of the arguments are
647 determined by the C function. Special read-only attributes:
648 :attr:`__doc__` is the function's documentation string, or ``None`` if
649 unavailable; :attr:`__name__` is the function's name; :attr:`__self__` is
650 set to ``None`` (but see the next item); :attr:`__module__` is the name of
651 the module the function was defined in or ``None`` if unavailable.
652
653 Built-in methods
654 .. index::
655 object: built-in method
656 object: method
657 pair: built-in; method
658
659 This is really a different disguise of a built-in function, this time containing
660 an object passed to the C function as an implicit extra argument. An example of
661 a built-in method is ``alist.append()``, assuming *alist* is a list object. In
662 this case, the special read-only attribute :attr:`__self__` is set to the object
663 denoted by *list*.
664
Georg Brandl85eb8c12007-08-31 16:33:38 +0000665 Classes
666 Classes are callable. These objects normally act as factories for new
667 instances of themselves, but variations are possible for class types that
668 override :meth:`__new__`. The arguments of the call are passed to
669 :meth:`__new__` and, in the typical case, to :meth:`__init__` to
670 initialize the new instance.
Georg Brandl116aa622007-08-15 14:28:22 +0000671
Georg Brandl85eb8c12007-08-31 16:33:38 +0000672 Class Instances
673 Instances of arbitrary classes can be made callable by defining a
674 :meth:`__call__` method in their class.
Georg Brandl116aa622007-08-15 14:28:22 +0000675
Georg Brandl116aa622007-08-15 14:28:22 +0000676
677Modules
678 .. index::
679 statement: import
680 object: module
681
682 Modules are imported by the :keyword:`import` statement (see section
683 :ref:`import`). A module object has a
684 namespace implemented by a dictionary object (this is the dictionary referenced
685 by the __globals__ attribute of functions defined in the module). Attribute
686 references are translated to lookups in this dictionary, e.g., ``m.x`` is
687 equivalent to ``m.__dict__["x"]``. A module object does not contain the code
688 object used to initialize the module (since it isn't needed once the
689 initialization is done).
690
691 .. %
692
693 Attribute assignment updates the module's namespace dictionary, e.g., ``m.x =
694 1`` is equivalent to ``m.__dict__["x"] = 1``.
695
696 .. index:: single: __dict__ (module attribute)
697
698 Special read-only attribute: :attr:`__dict__` is the module's namespace as a
699 dictionary object.
700
701 .. index::
702 single: __name__ (module attribute)
703 single: __doc__ (module attribute)
704 single: __file__ (module attribute)
705 pair: module; namespace
706
707 Predefined (writable) attributes: :attr:`__name__` is the module's name;
708 :attr:`__doc__` is the module's documentation string, or ``None`` if
709 unavailable; :attr:`__file__` is the pathname of the file from which the module
710 was loaded, if it was loaded from a file. The :attr:`__file__` attribute is not
711 present for C modules that are statically linked into the interpreter; for
712 extension modules loaded dynamically from a shared library, it is the pathname
713 of the shared library file.
714
Georg Brandl85eb8c12007-08-31 16:33:38 +0000715.. XXX "Classes" and "Instances" is outdated!
716 see http://www.python.org/doc/newstyle.html for newstyle information
717
718Custom classes
Georg Brandl116aa622007-08-15 14:28:22 +0000719 Class objects are created by class definitions (see section :ref:`class`). A
720 class has a namespace implemented by a dictionary object. Class attribute
721 references are translated to lookups in this dictionary, e.g., ``C.x`` is
722 translated to ``C.__dict__["x"]``. When the attribute name is not found
723 there, the attribute search continues in the base classes. The search is
724 depth-first, left-to-right in the order of occurrence in the base class list.
725
Georg Brandl85eb8c12007-08-31 16:33:38 +0000726 .. XXX document descriptors and new MRO
727
Georg Brandl116aa622007-08-15 14:28:22 +0000728 .. index::
729 object: class
730 object: class instance
731 object: instance
732 pair: class object; call
733 single: container
734 object: dictionary
735 pair: class; attribute
736
737 When a class attribute reference (for class :class:`C`, say) would yield a
738 user-defined function object or an unbound user-defined method object whose
739 associated class is either :class:`C` or one of its base classes, it is
740 transformed into an unbound user-defined method object whose :attr:`im_class`
741 attribute is :class:`C`. When it would yield a class method object, it is
742 transformed into a bound user-defined method object whose :attr:`im_class`
743 and :attr:`im_self` attributes are both :class:`C`. When it would yield a
744 static method object, it is transformed into the object wrapped by the static
745 method object. See section :ref:`descriptors` for another way in which
746 attributes retrieved from a class may differ from those actually contained in
747 its :attr:`__dict__`.
748
749 .. index:: triple: class; attribute; assignment
750
751 Class attribute assignments update the class's dictionary, never the dictionary
752 of a base class.
753
754 .. index:: pair: class object; call
755
756 A class object can be called (see above) to yield a class instance (see below).
757
758 .. index::
759 single: __name__ (class attribute)
760 single: __module__ (class attribute)
761 single: __dict__ (class attribute)
762 single: __bases__ (class attribute)
763 single: __doc__ (class attribute)
764
765 Special attributes: :attr:`__name__` is the class name; :attr:`__module__` is
766 the module name in which the class was defined; :attr:`__dict__` is the
767 dictionary containing the class's namespace; :attr:`__bases__` is a tuple
768 (possibly empty or a singleton) containing the base classes, in the order of
769 their occurrence in the base class list; :attr:`__doc__` is the class's
770 documentation string, or None if undefined.
771
772Class instances
773 .. index::
774 object: class instance
775 object: instance
776 pair: class; instance
777 pair: class instance; attribute
778
779 A class instance is created by calling a class object (see above). A class
780 instance has a namespace implemented as a dictionary which is the first place in
781 which attribute references are searched. When an attribute is not found there,
782 and the instance's class has an attribute by that name, the search continues
783 with the class attributes. If a class attribute is found that is a user-defined
784 function object or an unbound user-defined method object whose associated class
785 is the class (call it :class:`C`) of the instance for which the attribute
786 reference was initiated or one of its bases, it is transformed into a bound
787 user-defined method object whose :attr:`im_class` attribute is :class:`C` and
788 whose :attr:`im_self` attribute is the instance. Static method and class method
789 objects are also transformed, as if they had been retrieved from class
790 :class:`C`; see above under "Classes". See section :ref:`descriptors` for
791 another way in which attributes of a class retrieved via its instances may
792 differ from the objects actually stored in the class's :attr:`__dict__`. If no
793 class attribute is found, and the object's class has a :meth:`__getattr__`
794 method, that is called to satisfy the lookup.
795
796 .. index:: triple: class instance; attribute; assignment
797
798 Attribute assignments and deletions update the instance's dictionary, never a
799 class's dictionary. If the class has a :meth:`__setattr__` or
800 :meth:`__delattr__` method, this is called instead of updating the instance
801 dictionary directly.
802
803 .. index::
804 object: numeric
805 object: sequence
806 object: mapping
807
808 Class instances can pretend to be numbers, sequences, or mappings if they have
809 methods with certain special names. See section :ref:`specialnames`.
810
811 .. index::
812 single: __dict__ (instance attribute)
813 single: __class__ (instance attribute)
814
815 Special attributes: :attr:`__dict__` is the attribute dictionary;
816 :attr:`__class__` is the instance's class.
817
818Files
819 .. index::
820 object: file
821 builtin: open
822 single: popen() (in module os)
823 single: makefile() (socket method)
824 single: sys.stdin
825 single: sys.stdout
826 single: sys.stderr
827 single: stdio
828 single: stdin (in module sys)
829 single: stdout (in module sys)
830 single: stderr (in module sys)
831
832 A file object represents an open file. File objects are created by the
833 :func:`open` built-in function, and also by :func:`os.popen`,
834 :func:`os.fdopen`, and the :meth:`makefile` method of socket objects (and
835 perhaps by other functions or methods provided by extension modules). The
836 objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are initialized to
837 file objects corresponding to the interpreter's standard input, output and
838 error streams. See :ref:`bltin-file-objects` for complete documentation of
839 file objects.
840
841Internal types
842 .. index::
843 single: internal type
844 single: types, internal
845
846 A few types used internally by the interpreter are exposed to the user. Their
847 definitions may change with future versions of the interpreter, but they are
848 mentioned here for completeness.
849
850 Code objects
851 .. index::
852 single: bytecode
853 object: code
854
Georg Brandl9afde1c2007-11-01 20:32:30 +0000855 Code objects represent *byte-compiled* executable Python code, or :term:`bytecode`.
Georg Brandl116aa622007-08-15 14:28:22 +0000856 The difference between a code object and a function object is that the function
857 object contains an explicit reference to the function's globals (the module in
858 which it was defined), while a code object contains no context; also the default
859 argument values are stored in the function object, not in the code object
860 (because they represent values calculated at run-time). Unlike function
861 objects, code objects are immutable and contain no references (directly or
862 indirectly) to mutable objects.
863
864 Special read-only attributes: :attr:`co_name` gives the function name;
865 :attr:`co_argcount` is the number of positional arguments (including arguments
866 with default values); :attr:`co_nlocals` is the number of local variables used
867 by the function (including arguments); :attr:`co_varnames` is a tuple containing
868 the names of the local variables (starting with the argument names);
869 :attr:`co_cellvars` is a tuple containing the names of local variables that are
870 referenced by nested functions; :attr:`co_freevars` is a tuple containing the
871 names of free variables; :attr:`co_code` is a string representing the sequence
872 of bytecode instructions; :attr:`co_consts` is a tuple containing the literals
873 used by the bytecode; :attr:`co_names` is a tuple containing the names used by
874 the bytecode; :attr:`co_filename` is the filename from which the code was
875 compiled; :attr:`co_firstlineno` is the first line number of the function;
Georg Brandl9afde1c2007-11-01 20:32:30 +0000876 :attr:`co_lnotab` is a string encoding the mapping from bytecode offsets to
Georg Brandl116aa622007-08-15 14:28:22 +0000877 line numbers (for details see the source code of the interpreter);
878 :attr:`co_stacksize` is the required stack size (including local variables);
879 :attr:`co_flags` is an integer encoding a number of flags for the interpreter.
880
881 .. index::
882 single: co_argcount (code object attribute)
883 single: co_code (code object attribute)
884 single: co_consts (code object attribute)
885 single: co_filename (code object attribute)
886 single: co_firstlineno (code object attribute)
887 single: co_flags (code object attribute)
888 single: co_lnotab (code object attribute)
889 single: co_name (code object attribute)
890 single: co_names (code object attribute)
891 single: co_nlocals (code object attribute)
892 single: co_stacksize (code object attribute)
893 single: co_varnames (code object attribute)
894 single: co_cellvars (code object attribute)
895 single: co_freevars (code object attribute)
896
897 .. index:: object: generator
898
899 The following flag bits are defined for :attr:`co_flags`: bit ``0x04`` is set if
900 the function uses the ``*arguments`` syntax to accept an arbitrary number of
901 positional arguments; bit ``0x08`` is set if the function uses the
902 ``**keywords`` syntax to accept arbitrary keyword arguments; bit ``0x20`` is set
903 if the function is a generator.
904
905 Future feature declarations (``from __future__ import division``) also use bits
906 in :attr:`co_flags` to indicate whether a code object was compiled with a
907 particular feature enabled: bit ``0x2000`` is set if the function was compiled
908 with future division enabled; bits ``0x10`` and ``0x1000`` were used in earlier
909 versions of Python.
910
911 Other bits in :attr:`co_flags` are reserved for internal use.
912
913 .. index:: single: documentation string
914
915 If a code object represents a function, the first item in :attr:`co_consts` is
916 the documentation string of the function, or ``None`` if undefined.
917
918 Frame objects
919 .. index:: object: frame
920
921 Frame objects represent execution frames. They may occur in traceback objects
922 (see below).
923
924 .. index::
925 single: f_back (frame attribute)
926 single: f_code (frame attribute)
927 single: f_globals (frame attribute)
928 single: f_locals (frame attribute)
929 single: f_lasti (frame attribute)
930 single: f_builtins (frame attribute)
931
932 Special read-only attributes: :attr:`f_back` is to the previous stack frame
933 (towards the caller), or ``None`` if this is the bottom stack frame;
934 :attr:`f_code` is the code object being executed in this frame; :attr:`f_locals`
935 is the dictionary used to look up local variables; :attr:`f_globals` is used for
936 global variables; :attr:`f_builtins` is used for built-in (intrinsic) names;
937 :attr:`f_lasti` gives the precise instruction (this is an index into the
938 bytecode string of the code object).
939
940 .. index::
941 single: f_trace (frame attribute)
942 single: f_exc_type (frame attribute)
943 single: f_exc_value (frame attribute)
944 single: f_exc_traceback (frame attribute)
945 single: f_lineno (frame attribute)
946
947 Special writable attributes: :attr:`f_trace`, if not ``None``, is a function
948 called at the start of each source code line (this is used by the debugger);
949 :attr:`f_exc_type`, :attr:`f_exc_value`, :attr:`f_exc_traceback` represent the
950 last exception raised in the parent frame provided another exception was ever
951 raised in the current frame (in all other cases they are None); :attr:`f_lineno`
952 is the current line number of the frame --- writing to this from within a trace
953 function jumps to the given line (only for the bottom-most frame). A debugger
954 can implement a Jump command (aka Set Next Statement) by writing to f_lineno.
955
956 Traceback objects
957 .. index::
958 object: traceback
959 pair: stack; trace
960 pair: exception; handler
961 pair: execution; stack
962 single: exc_info (in module sys)
963 single: exc_traceback (in module sys)
964 single: last_traceback (in module sys)
965 single: sys.exc_info
966 single: sys.last_traceback
967
968 Traceback objects represent a stack trace of an exception. A traceback object
969 is created when an exception occurs. When the search for an exception handler
970 unwinds the execution stack, at each unwound level a traceback object is
971 inserted in front of the current traceback. When an exception handler is
972 entered, the stack trace is made available to the program. (See section
973 :ref:`try`.) It is accessible as the third item of the
974 tuple returned by ``sys.exc_info()``. When the program contains no suitable
975 handler, the stack trace is written (nicely formatted) to the standard error
976 stream; if the interpreter is interactive, it is also made available to the user
977 as ``sys.last_traceback``.
978
979 .. index::
980 single: tb_next (traceback attribute)
981 single: tb_frame (traceback attribute)
982 single: tb_lineno (traceback attribute)
983 single: tb_lasti (traceback attribute)
984 statement: try
985
986 Special read-only attributes: :attr:`tb_next` is the next level in the stack
987 trace (towards the frame where the exception occurred), or ``None`` if there is
988 no next level; :attr:`tb_frame` points to the execution frame of the current
989 level; :attr:`tb_lineno` gives the line number where the exception occurred;
990 :attr:`tb_lasti` indicates the precise instruction. The line number and last
991 instruction in the traceback may differ from the line number of its frame object
992 if the exception occurred in a :keyword:`try` statement with no matching except
993 clause or with a finally clause.
994
995 Slice objects
996 .. index:: builtin: slice
997
Georg Brandlcb8ecb12007-09-04 06:35:14 +0000998 Slice objects are used to represent slices for :meth:`__getitem__`
999 methods. They are also created by the built-in :func:`slice` function.
Georg Brandl116aa622007-08-15 14:28:22 +00001000
1001 .. index::
1002 single: start (slice object attribute)
1003 single: stop (slice object attribute)
1004 single: step (slice object attribute)
1005
1006 Special read-only attributes: :attr:`start` is the lower bound; :attr:`stop` is
1007 the upper bound; :attr:`step` is the step value; each is ``None`` if omitted.
1008 These attributes can have any type.
1009
1010 Slice objects support one method:
1011
Georg Brandl116aa622007-08-15 14:28:22 +00001012 .. method:: slice.indices(self, length)
1013
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001014 This method takes a single integer argument *length* and computes
1015 information about the slice that the slice object would describe if
1016 applied to a sequence of *length* items. It returns a tuple of three
1017 integers; respectively these are the *start* and *stop* indices and the
1018 *step* or stride length of the slice. Missing or out-of-bounds indices
1019 are handled in a manner consistent with regular slices.
Georg Brandl116aa622007-08-15 14:28:22 +00001020
Georg Brandl116aa622007-08-15 14:28:22 +00001021 Static method objects
1022 Static method objects provide a way of defeating the transformation of function
1023 objects to method objects described above. A static method object is a wrapper
1024 around any other object, usually a user-defined method object. When a static
1025 method object is retrieved from a class or a class instance, the object actually
1026 returned is the wrapped object, which is not subject to any further
1027 transformation. Static method objects are not themselves callable, although the
1028 objects they wrap usually are. Static method objects are created by the built-in
1029 :func:`staticmethod` constructor.
1030
1031 Class method objects
1032 A class method object, like a static method object, is a wrapper around another
1033 object that alters the way in which that object is retrieved from classes and
1034 class instances. The behaviour of class method objects upon such retrieval is
1035 described above, under "User-defined methods". Class method objects are created
1036 by the built-in :func:`classmethod` constructor.
1037
1038 .. % Internal types
1039
Georg Brandl116aa622007-08-15 14:28:22 +00001040.. % =========================================================================
1041
Georg Brandl9afde1c2007-11-01 20:32:30 +00001042.. _newstyle:
Georg Brandl116aa622007-08-15 14:28:22 +00001043
1044.. _specialnames:
1045
1046Special method names
1047====================
1048
1049.. index::
1050 pair: operator; overloading
1051 single: __getitem__() (mapping object method)
1052
1053A class can implement certain operations that are invoked by special syntax
1054(such as arithmetic operations or subscripting and slicing) by defining methods
1055with special names. This is Python's approach to :dfn:`operator overloading`,
1056allowing classes to define their own behavior with respect to language
1057operators. For instance, if a class defines a method named :meth:`__getitem__`,
Georg Brandl85eb8c12007-08-31 16:33:38 +00001058and ``x`` is an instance of this class, then ``x[i]`` is equivalent to
Georg Brandl116aa622007-08-15 14:28:22 +00001059``x.__getitem__(i)``. Except where mentioned, attempts to execute an operation
1060raise an exception when no appropriate method is defined.
1061
Georg Brandl85eb8c12007-08-31 16:33:38 +00001062.. XXX above translation is not correct for new-style classes!
1063
Georg Brandl65ea9bd2007-09-05 13:36:27 +00001064Special methods are only guaranteed to work if defined in an object's class, not
1065in the object's instance dictionary. That explains why this won't work::
1066
1067 >>> class C:
1068 ... pass
1069 ...
1070 >>> c = C()
1071 >>> c.__len__ = lambda: 5
1072 >>> len(c)
1073 Traceback (most recent call last):
1074 File "<stdin>", line 1, in <module>
1075 TypeError: object of type 'C' has no len()
1076
1077
Georg Brandl116aa622007-08-15 14:28:22 +00001078When implementing a class that emulates any built-in type, it is important that
1079the emulation only be implemented to the degree that it makes sense for the
1080object being modelled. For example, some sequences may work well with retrieval
1081of individual elements, but extracting a slice may not make sense. (One example
1082of this is the :class:`NodeList` interface in the W3C's Document Object Model.)
1083
1084
1085.. _customization:
1086
1087Basic customization
1088-------------------
1089
1090
1091.. method:: object.__new__(cls[, ...])
1092
1093 Called to create a new instance of class *cls*. :meth:`__new__` is a static
1094 method (special-cased so you need not declare it as such) that takes the class
1095 of which an instance was requested as its first argument. The remaining
1096 arguments are those passed to the object constructor expression (the call to the
1097 class). The return value of :meth:`__new__` should be the new object instance
1098 (usually an instance of *cls*).
1099
1100 Typical implementations create a new instance of the class by invoking the
1101 superclass's :meth:`__new__` method using ``super(currentclass,
1102 cls).__new__(cls[, ...])`` with appropriate arguments and then modifying the
1103 newly-created instance as necessary before returning it.
1104
1105 If :meth:`__new__` returns an instance of *cls*, then the new instance's
1106 :meth:`__init__` method will be invoked like ``__init__(self[, ...])``, where
1107 *self* is the new instance and the remaining arguments are the same as were
1108 passed to :meth:`__new__`.
1109
1110 If :meth:`__new__` does not return an instance of *cls*, then the new instance's
1111 :meth:`__init__` method will not be invoked.
1112
1113 :meth:`__new__` is intended mainly to allow subclasses of immutable types (like
1114 int, str, or tuple) to customize instance creation.
1115
1116
1117.. method:: object.__init__(self[, ...])
1118
1119 .. index:: pair: class; constructor
1120
1121 Called when the instance is created. The arguments are those passed to the
1122 class constructor expression. If a base class has an :meth:`__init__` method,
1123 the derived class's :meth:`__init__` method, if any, must explicitly call it to
1124 ensure proper initialization of the base class part of the instance; for
1125 example: ``BaseClass.__init__(self, [args...])``. As a special constraint on
1126 constructors, no value may be returned; doing so will cause a :exc:`TypeError`
1127 to be raised at runtime.
1128
1129
1130.. method:: object.__del__(self)
1131
1132 .. index::
1133 single: destructor
1134 statement: del
1135
1136 Called when the instance is about to be destroyed. This is also called a
1137 destructor. If a base class has a :meth:`__del__` method, the derived class's
1138 :meth:`__del__` method, if any, must explicitly call it to ensure proper
1139 deletion of the base class part of the instance. Note that it is possible
1140 (though not recommended!) for the :meth:`__del__` method to postpone destruction
1141 of the instance by creating a new reference to it. It may then be called at a
1142 later time when this new reference is deleted. It is not guaranteed that
1143 :meth:`__del__` methods are called for objects that still exist when the
1144 interpreter exits.
1145
1146 .. note::
1147
1148 ``del x`` doesn't directly call ``x.__del__()`` --- the former decrements
1149 the reference count for ``x`` by one, and the latter is only called when
1150 ``x``'s reference count reaches zero. Some common situations that may
1151 prevent the reference count of an object from going to zero include:
1152 circular references between objects (e.g., a doubly-linked list or a tree
1153 data structure with parent and child pointers); a reference to the object
1154 on the stack frame of a function that caught an exception (the traceback
1155 stored in ``sys.exc_info()[2]`` keeps the stack frame alive); or a
1156 reference to the object on the stack frame that raised an unhandled
1157 exception in interactive mode (the traceback stored in
1158 ``sys.last_traceback`` keeps the stack frame alive). The first situation
1159 can only be remedied by explicitly breaking the cycles; the latter two
1160 situations can be resolved by storing ``None`` in ``sys.last_traceback``.
1161 Circular references which are garbage are detected when the option cycle
1162 detector is enabled (it's on by default), but can only be cleaned up if
1163 there are no Python- level :meth:`__del__` methods involved. Refer to the
1164 documentation for the :mod:`gc` module for more information about how
1165 :meth:`__del__` methods are handled by the cycle detector, particularly
1166 the description of the ``garbage`` value.
1167
1168 .. warning::
1169
1170 Due to the precarious circumstances under which :meth:`__del__` methods are
1171 invoked, exceptions that occur during their execution are ignored, and a warning
1172 is printed to ``sys.stderr`` instead. Also, when :meth:`__del__` is invoked in
1173 response to a module being deleted (e.g., when execution of the program is
1174 done), other globals referenced by the :meth:`__del__` method may already have
1175 been deleted. For this reason, :meth:`__del__` methods should do the absolute
1176 minimum needed to maintain external invariants. Starting with version 1.5,
1177 Python guarantees that globals whose name begins with a single underscore are
1178 deleted from their module before other globals are deleted; if no other
1179 references to such globals exist, this may help in assuring that imported
1180 modules are still available at the time when the :meth:`__del__` method is
1181 called.
1182
1183
1184.. method:: object.__repr__(self)
1185
1186 .. index:: builtin: repr
1187
1188 Called by the :func:`repr` built-in function and by string conversions (reverse
1189 quotes) to compute the "official" string representation of an object. If at all
1190 possible, this should look like a valid Python expression that could be used to
1191 recreate an object with the same value (given an appropriate environment). If
1192 this is not possible, a string of the form ``<...some useful description...>``
1193 should be returned. The return value must be a string object. If a class
1194 defines :meth:`__repr__` but not :meth:`__str__`, then :meth:`__repr__` is also
1195 used when an "informal" string representation of instances of that class is
1196 required.
1197
Georg Brandl116aa622007-08-15 14:28:22 +00001198 This is typically used for debugging, so it is important that the representation
1199 is information-rich and unambiguous.
1200
1201
1202.. method:: object.__str__(self)
1203
1204 .. index::
1205 builtin: str
Georg Brandl4b491312007-08-31 09:22:56 +00001206 builtin: print
Georg Brandl116aa622007-08-15 14:28:22 +00001207
Georg Brandldcc56f82007-08-31 16:41:12 +00001208 Called by the :func:`str` built-in function and by the :func:`print` function
1209 to compute the "informal" string representation of an object. This differs
1210 from :meth:`__repr__` in that it does not have to be a valid Python
Georg Brandl116aa622007-08-15 14:28:22 +00001211 expression: a more convenient or concise representation may be used instead.
1212 The return value must be a string object.
1213
Georg Brandldcc56f82007-08-31 16:41:12 +00001214 .. XXX what about subclasses of string?
1215
Georg Brandl116aa622007-08-15 14:28:22 +00001216
Georg Brandl4b491312007-08-31 09:22:56 +00001217.. method:: object.__format__(self, format_spec)
1218
1219 .. index::
1220 pair: string; conversion
1221 builtin: str
1222 builtin: print
1223
1224 Called by the :func:`format` built-in function (and by extension, the
1225 :meth:`format` method of class :class:`str`) to produce a "formatted"
1226 string representation of an object. The ``format_spec`` argument is
1227 a string that contains a description of the formatting options desired.
1228 The interpretation of the ``format_spec`` argument is up to the type
1229 implementing :meth:`__format__`, however most classes will either
1230 delegate formatting to one of the built-in types, or use a similar
1231 formatting option syntax.
1232
1233 See :ref:`formatspec` for a description of the standard formatting syntax.
1234
1235 The return value must be a string object.
1236
1237
Georg Brandl116aa622007-08-15 14:28:22 +00001238.. method:: object.__lt__(self, other)
1239 object.__le__(self, other)
1240 object.__eq__(self, other)
1241 object.__ne__(self, other)
1242 object.__gt__(self, other)
1243 object.__ge__(self, other)
1244
Georg Brandl116aa622007-08-15 14:28:22 +00001245 These are the so-called "rich comparison" methods, and are called for comparison
1246 operators in preference to :meth:`__cmp__` below. The correspondence between
1247 operator symbols and method names is as follows: ``x<y`` calls ``x.__lt__(y)``,
1248 ``x<=y`` calls ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` calls
1249 ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` calls
1250 ``x.__ge__(y)``.
1251
1252 A rich comparison method may return the singleton ``NotImplemented`` if it does
1253 not implement the operation for a given pair of arguments. By convention,
1254 ``False`` and ``True`` are returned for a successful comparison. However, these
1255 methods can return any value, so if the comparison operator is used in a Boolean
1256 context (e.g., in the condition of an ``if`` statement), Python will call
1257 :func:`bool` on the value to determine if the result is true or false.
1258
1259 There are no implied relationships among the comparison operators. The truth of
1260 ``x==y`` does not imply that ``x!=y`` is false. Accordingly, when defining
1261 :meth:`__eq__`, one should also define :meth:`__ne__` so that the operators will
1262 behave as expected.
1263
1264 There are no reflected (swapped-argument) versions of these methods (to be used
1265 when the left argument does not support the operation but the right argument
1266 does); rather, :meth:`__lt__` and :meth:`__gt__` are each other's reflection,
1267 :meth:`__le__` and :meth:`__ge__` are each other's reflection, and
1268 :meth:`__eq__` and :meth:`__ne__` are their own reflection.
1269
1270 Arguments to rich comparison methods are never coerced.
1271
1272
1273.. method:: object.__cmp__(self, other)
1274
1275 .. index::
1276 builtin: cmp
1277 single: comparisons
1278
1279 Called by comparison operations if rich comparison (see above) is not defined.
1280 Should return a negative integer if ``self < other``, zero if ``self == other``,
1281 a positive integer if ``self > other``. If no :meth:`__cmp__`, :meth:`__eq__`
1282 or :meth:`__ne__` operation is defined, class instances are compared by object
1283 identity ("address"). See also the description of :meth:`__hash__` for some
1284 important notes on creating objects which support custom comparison operations
1285 and are usable as dictionary keys. (Note: the restriction that exceptions are
1286 not propagated by :meth:`__cmp__` has been removed since Python 1.5.)
1287
1288
Georg Brandl116aa622007-08-15 14:28:22 +00001289.. method:: object.__hash__(self)
1290
1291 .. index::
1292 object: dictionary
1293 builtin: hash
Georg Brandl16174572007-09-01 12:38:06 +00001294 single: __cmp__() (object method)
Georg Brandl116aa622007-08-15 14:28:22 +00001295
1296 Called for the key object for dictionary operations, and by the built-in
1297 function :func:`hash`. Should return a 32-bit integer usable as a hash value
1298 for dictionary operations. The only required property is that objects which
1299 compare equal have the same hash value; it is advised to somehow mix together
1300 (e.g., using exclusive or) the hash values for the components of the object that
1301 also play a part in comparison of objects. If a class does not define a
1302 :meth:`__cmp__` method it should not define a :meth:`__hash__` operation either;
1303 if it defines :meth:`__cmp__` or :meth:`__eq__` but not :meth:`__hash__`, its
1304 instances will not be usable as dictionary keys. If a class defines mutable
1305 objects and implements a :meth:`__cmp__` or :meth:`__eq__` method, it should not
1306 implement :meth:`__hash__`, since the dictionary implementation requires that a
1307 key's hash value is immutable (if the object's hash value changes, it will be in
1308 the wrong hash bucket).
1309
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