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