blob: c2d3aee32bdc6252ce7bca5c2cfbcdf27c323867 [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
268 .. index:: single: extended slicing
269
270 Some sequences also support "extended slicing" with a third "step" parameter:
271 ``a[i:j:k]`` selects all items of *a* with index *x* where ``x = i + n*k``, *n*
272 ``>=`` ``0`` and *i* ``<=`` *x* ``<`` *j*.
273
274 Sequences are distinguished according to their mutability:
275
276 Immutable sequences
277 .. index::
278 object: immutable sequence
279 object: immutable
280
281 An object of an immutable sequence type cannot change once it is created. (If
282 the object contains references to other objects, these other objects may be
283 mutable and may be changed; however, the collection of objects directly
284 referenced by an immutable object cannot change.)
285
286 The following types are immutable sequences:
287
288 Strings
289 .. index::
290 builtin: chr
291 builtin: ord
292 object: string
293 single: character
294 single: byte
295 single: ASCII@ASCII
296
297 The items of a string are characters. There is no separate character type; a
298 character is represented by a string of one item. Characters represent (at
299 least) 8-bit bytes. The built-in functions :func:`chr` and :func:`ord` convert
300 between characters and nonnegative integers representing the byte values. Bytes
301 with the values 0-127 usually represent the corresponding ASCII values, but the
302 interpretation of values is up to the program. The string data type is also
303 used to represent arrays of bytes, e.g., to hold data read from a file.
304
305 .. index::
306 single: ASCII@ASCII
307 single: EBCDIC
308 single: character set
309 pair: string; comparison
310 builtin: chr
311 builtin: ord
312
313 (On systems whose native character set is not ASCII, strings may use EBCDIC in
314 their internal representation, provided the functions :func:`chr` and
315 :func:`ord` implement a mapping between ASCII and EBCDIC, and string comparison
316 preserves the ASCII order. Or perhaps someone can propose a better rule?)
317
318 Unicode
319 .. index::
320 builtin: unichr
321 builtin: ord
322 builtin: unicode
323 object: unicode
324 single: character
325 single: integer
326 single: Unicode
327
328 The items of a Unicode object are Unicode code units. A Unicode code unit is
329 represented by a Unicode object of one item and can hold either a 16-bit or
330 32-bit value representing a Unicode ordinal (the maximum value for the ordinal
331 is given in ``sys.maxunicode``, and depends on how Python is configured at
332 compile time). Surrogate pairs may be present in the Unicode object, and will
333 be reported as two separate items. The built-in functions :func:`unichr` and
334 :func:`ord` convert between code units and nonnegative integers representing the
335 Unicode ordinals as defined in the Unicode Standard 3.0. Conversion from and to
336 other encodings are possible through the Unicode method :meth:`encode` and the
337 built-in function :func:`unicode`.
338
339 Tuples
340 .. index::
341 object: tuple
342 pair: singleton; tuple
343 pair: empty; tuple
344
345 The items of a tuple are arbitrary Python objects. Tuples of two or more items
346 are formed by comma-separated lists of expressions. A tuple of one item (a
347 'singleton') can be formed by affixing a comma to an expression (an expression
348 by itself does not create a tuple, since parentheses must be usable for grouping
349 of expressions). An empty tuple can be formed by an empty pair of parentheses.
350
351 .. % Immutable sequences
352
353 Mutable sequences
354 .. index::
355 object: mutable sequence
356 object: mutable
357 pair: assignment; statement
358 single: delete
359 statement: del
360 single: subscription
361 single: slicing
362
363 Mutable sequences can be changed after they are created. The subscription and
364 slicing notations can be used as the target of assignment and :keyword:`del`
365 (delete) statements.
366
367 There is currently a single intrinsic mutable sequence type:
368
369 Lists
370 .. index:: object: list
371
372 The items of a list are arbitrary Python objects. Lists are formed by placing a
373 comma-separated list of expressions in square brackets. (Note that there are no
374 special cases needed to form lists of length 0 or 1.)
375
376 .. index:: module: array
377
378 The extension module :mod:`array` provides an additional example of a mutable
379 sequence type.
380
381 .. % Mutable sequences
382
383 .. % Sequences
384
385Set types
386 .. index::
387 builtin: len
388 object: set type
389
390 These represent unordered, finite sets of unique, immutable objects. As such,
391 they cannot be indexed by any subscript. However, they can be iterated over, and
392 the built-in function :func:`len` returns the number of items in a set. Common
393 uses for sets are fast membership testing, removing duplicates from a sequence,
394 and computing mathematical operations such as intersection, union, difference,
395 and symmetric difference.
396
397 For set elements, the same immutability rules apply as for dictionary keys. Note
398 that numeric types obey the normal rules for numeric comparison: if two numbers
399 compare equal (e.g., ``1`` and ``1.0``), only one of them can be contained in a
400 set.
401
402 There are currently two intrinsic set types:
403
404 Sets
405 .. index:: object: set
406
407 These represent a mutable set. They are created by the built-in :func:`set`
408 constructor and can be modified afterwards by several methods, such as
409 :meth:`add`.
410
411 Frozen sets
412 .. index:: object: frozenset
413
414 These represent an immutable set. They are created by the built-in
415 :func:`frozenset` constructor. As a frozenset is immutable and hashable, it can
416 be used again as an element of another set, or as a dictionary key.
417
418 .. % Set types
419
420Mappings
421 .. index::
422 builtin: len
423 single: subscription
424 object: mapping
425
426 These represent finite sets of objects indexed by arbitrary index sets. The
427 subscript notation ``a[k]`` selects the item indexed by ``k`` from the mapping
428 ``a``; this can be used in expressions and as the target of assignments or
429 :keyword:`del` statements. The built-in function :func:`len` returns the number
430 of items in a mapping.
431
432 There is currently a single intrinsic mapping type:
433
434 Dictionaries
435 .. index:: object: dictionary
436
437 These represent finite sets of objects indexed by nearly arbitrary values. The
438 only types of values not acceptable as keys are values containing lists or
439 dictionaries or other mutable types that are compared by value rather than by
440 object identity, the reason being that the efficient implementation of
441 dictionaries requires a key's hash value to remain constant. Numeric types used
442 for keys obey the normal rules for numeric comparison: if two numbers compare
443 equal (e.g., ``1`` and ``1.0``) then they can be used interchangeably to index
444 the same dictionary entry.
445
446 Dictionaries are mutable; they can be created by the ``{...}`` notation (see
447 section :ref:`dict`).
448
449 .. index::
450 module: dbm
451 module: gdbm
452 module: bsddb
453
454 The extension modules :mod:`dbm`, :mod:`gdbm`, and :mod:`bsddb` provide
455 additional examples of mapping types.
456
457 .. % Mapping types
458
459Callable types
460 .. index::
461 object: callable
462 pair: function; call
463 single: invocation
464 pair: function; argument
465
466 These are the types to which the function call operation (see section
467 :ref:`calls`) can be applied:
468
469 User-defined functions
470 .. index::
471 pair: user-defined; function
472 object: function
473 object: user-defined function
474
475 A user-defined function object is created by a function definition (see
476 section :ref:`function`). It should be called with an argument list
477 containing the same number of items as the function's formal parameter
478 list.
479
480 Special attributes:
481
482 +-------------------------+-------------------------------+-----------+
483 | Attribute | Meaning | |
484 +=========================+===============================+===========+
485 | :attr:`__doc__` | The function's documentation | Writable |
486 | | string, or ``None`` if | |
487 | | unavailable | |
488 +-------------------------+-------------------------------+-----------+
489 | :attr:`__name__` | The function's name | Writable |
490 +-------------------------+-------------------------------+-----------+
491 | :attr:`__module__` | The name of the module the | Writable |
492 | | function was defined in, or | |
493 | | ``None`` if unavailable. | |
494 +-------------------------+-------------------------------+-----------+
495 | :attr:`__defaults__` | A tuple containing default | Writable |
496 | | argument values for those | |
497 | | arguments that have defaults, | |
498 | | or ``None`` if no arguments | |
499 | | have a default value | |
500 +-------------------------+-------------------------------+-----------+
501 | :attr:`__code__` | The code object representing | Writable |
502 | | the compiled function body. | |
503 +-------------------------+-------------------------------+-----------+
504 | :attr:`__globals__` | A reference to the dictionary | Read-only |
505 | | that holds the function's | |
506 | | global variables --- the | |
507 | | global namespace of the | |
508 | | module in which the function | |
509 | | was defined. | |
510 +-------------------------+-------------------------------+-----------+
511 | :attr:`__dict__` | The namespace supporting | Writable |
512 | | arbitrary function | |
513 | | attributes. | |
514 +-------------------------+-------------------------------+-----------+
515 | :attr:`__closure__` | ``None`` or a tuple of cells | Read-only |
516 | | that contain bindings for the | |
517 | | function's free variables. | |
518 +-------------------------+-------------------------------+-----------+
519 | :attr:`__annotations__` | A dict containing annotations | Writable |
520 | | of parameters. The keys of | |
521 | | the dict are the parameter | |
522 | | names, or ``'return'`` for | |
523 | | the return annotation, if | |
524 | | provided. | |
525 +-------------------------+-------------------------------+-----------+
526 | :attr:`__kwdefaults__` | A dict containing defaults | Writable |
527 | | for keyword-only parameters. | |
528 +-------------------------+-------------------------------+-----------+
529
530 Most of the attributes labelled "Writable" check the type of the assigned value.
531
532 .. versionchanged:: 2.4
533 ``__name__`` is now writable.
534
535 Function objects also support getting and setting arbitrary attributes, which
536 can be used, for example, to attach metadata to functions. Regular attribute
537 dot-notation is used to get and set such attributes. *Note that the current
538 implementation only supports function attributes on user-defined functions.
539 Function attributes on built-in functions may be supported in the future.*
540
541 Additional information about a function's definition can be retrieved from its
542 code object; see the description of internal types below.
543
544 .. index::
545 single: __doc__ (function attribute)
546 single: __name__ (function attribute)
547 single: __module__ (function attribute)
548 single: __dict__ (function attribute)
549 single: __defaults__ (function attribute)
550 single: __closure__ (function attribute)
551 single: __code__ (function attribute)
552 single: __globals__ (function attribute)
553 single: __annotations__ (function attribute)
554 single: __kwdefaults__ (function attribute)
555 pair: global; namespace
556
557 User-defined methods
558 .. index::
559 object: method
560 object: user-defined method
561 pair: user-defined; method
562
563 A user-defined method object combines a class, a class instance (or ``None``)
564 and any callable object (normally a user-defined function).
565
566 Special read-only attributes: :attr:`im_self` is the class instance object,
567 :attr:`im_func` is the function object; :attr:`im_class` is the class of
568 :attr:`im_self` for bound methods or the class that asked for the method for
569 unbound methods; :attr:`__doc__` is the method's documentation (same as
570 ``im_func.__doc__``); :attr:`__name__` is the method name (same as
571 ``im_func.__name__``); :attr:`__module__` is the name of the module the method
572 was defined in, or ``None`` if unavailable.
573
574 .. versionchanged:: 2.2
575 :attr:`im_self` used to refer to the class that defined the method.
576
577 .. index::
578 single: __doc__ (method attribute)
579 single: __name__ (method attribute)
580 single: __module__ (method attribute)
581 single: im_func (method attribute)
582 single: im_self (method attribute)
583
584 Methods also support accessing (but not setting) the arbitrary function
585 attributes on the underlying function object.
586
587 User-defined method objects may be created when getting an attribute of a class
588 (perhaps via an instance of that class), if that attribute is a user-defined
589 function object, an unbound user-defined method object, or a class method
590 object. When the attribute is a user-defined method object, a new method object
591 is only created if the class from which it is being retrieved is the same as, or
592 a derived class of, the class stored in the original method object; otherwise,
593 the original method object is used as it is.
594
595 .. index::
596 single: im_class (method attribute)
597 single: im_func (method attribute)
598 single: im_self (method attribute)
599
600 When a user-defined method object is created by retrieving a user-defined
601 function object from a class, its :attr:`im_self` attribute is ``None``
602 and the method object is said to be unbound. When one is created by
603 retrieving a user-defined function object from a class via one of its
604 instances, its :attr:`im_self` attribute is the instance, and the method
605 object is said to be bound. In either case, the new method's
606 :attr:`im_class` attribute is the class from which the retrieval takes
607 place, and its :attr:`im_func` attribute is the original function object.
608
609 .. index:: single: im_func (method attribute)
610
611 When a user-defined method object is created by retrieving another method object
612 from a class or instance, the behaviour is the same as for a function object,
613 except that the :attr:`im_func` attribute of the new instance is not the
614 original method object but its :attr:`im_func` attribute.
615
616 .. index::
617 single: im_class (method attribute)
618 single: im_func (method attribute)
619 single: im_self (method attribute)
620
621 When a user-defined method object is created by retrieving a class method object
622 from a class or instance, its :attr:`im_self` attribute is the class itself (the
623 same as the :attr:`im_class` attribute), and its :attr:`im_func` attribute is
624 the function object underlying the class method.
625
626 When an unbound user-defined method object is called, the underlying function
627 (:attr:`im_func`) is called, with the restriction that the first argument must
628 be an instance of the proper class (:attr:`im_class`) or of a derived class
629 thereof.
630
631 When a bound user-defined method object is called, the underlying function
632 (:attr:`im_func`) is called, inserting the class instance (:attr:`im_self`) in
633 front of the argument list. For instance, when :class:`C` is a class which
634 contains a definition for a function :meth:`f`, and ``x`` is an instance of
635 :class:`C`, calling ``x.f(1)`` is equivalent to calling ``C.f(x, 1)``.
636
637 When a user-defined method object is derived from a class method object, the
638 "class instance" stored in :attr:`im_self` will actually be the class itself, so
639 that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to calling ``f(C,1)``
640 where ``f`` is the underlying function.
641
642 Note that the transformation from function object to (unbound or bound) method
643 object happens each time the attribute is retrieved from the class or instance.
644 In some cases, a fruitful optimization is to assign the attribute to a local
645 variable and call that local variable. Also notice that this transformation only
646 happens for user-defined functions; other callable objects (and all non-callable
647 objects) are retrieved without transformation. It is also important to note
648 that user-defined functions which are attributes of a class instance are not
649 converted to bound methods; this *only* happens when the function is an
650 attribute of the class.
651
652 Generator functions
653 .. index::
654 single: generator; function
655 single: generator; iterator
656
657 A function or method which uses the :keyword:`yield` statement (see section
658 :ref:`yield`) is called a :dfn:`generator
659 function`. Such a function, when called, always returns an iterator object
660 which can be used to execute the body of the function: calling the iterator's
661 :meth:`__next__` method will cause the function to execute until it provides a
662 value using the :keyword:`yield` statement. When the function executes a
663 :keyword:`return` statement or falls off the end, a :exc:`StopIteration`
664 exception is raised and the iterator will have reached the end of the set of
665 values to be returned.
666
667 Built-in functions
668 .. index::
669 object: built-in function
670 object: function
671 pair: C; language
672
673 A built-in function object is a wrapper around a C function. Examples of
674 built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a
675 standard built-in module). The number and type of the arguments are
676 determined by the C function. Special read-only attributes:
677 :attr:`__doc__` is the function's documentation string, or ``None`` if
678 unavailable; :attr:`__name__` is the function's name; :attr:`__self__` is
679 set to ``None`` (but see the next item); :attr:`__module__` is the name of
680 the module the function was defined in or ``None`` if unavailable.
681
682 Built-in methods
683 .. index::
684 object: built-in method
685 object: method
686 pair: built-in; method
687
688 This is really a different disguise of a built-in function, this time containing
689 an object passed to the C function as an implicit extra argument. An example of
690 a built-in method is ``alist.append()``, assuming *alist* is a list object. In
691 this case, the special read-only attribute :attr:`__self__` is set to the object
692 denoted by *list*.
693
Georg Brandl85eb8c12007-08-31 16:33:38 +0000694 Classes
695 Classes are callable. These objects normally act as factories for new
696 instances of themselves, but variations are possible for class types that
697 override :meth:`__new__`. The arguments of the call are passed to
698 :meth:`__new__` and, in the typical case, to :meth:`__init__` to
699 initialize the new instance.
Georg Brandl116aa622007-08-15 14:28:22 +0000700
Georg Brandl85eb8c12007-08-31 16:33:38 +0000701 Class Instances
702 Instances of arbitrary classes can be made callable by defining a
703 :meth:`__call__` method in their class.
Georg Brandl116aa622007-08-15 14:28:22 +0000704
Georg Brandl116aa622007-08-15 14:28:22 +0000705
706Modules
707 .. index::
708 statement: import
709 object: module
710
711 Modules are imported by the :keyword:`import` statement (see section
712 :ref:`import`). A module object has a
713 namespace implemented by a dictionary object (this is the dictionary referenced
714 by the __globals__ attribute of functions defined in the module). Attribute
715 references are translated to lookups in this dictionary, e.g., ``m.x`` is
716 equivalent to ``m.__dict__["x"]``. A module object does not contain the code
717 object used to initialize the module (since it isn't needed once the
718 initialization is done).
719
720 .. %
721
722 Attribute assignment updates the module's namespace dictionary, e.g., ``m.x =
723 1`` is equivalent to ``m.__dict__["x"] = 1``.
724
725 .. index:: single: __dict__ (module attribute)
726
727 Special read-only attribute: :attr:`__dict__` is the module's namespace as a
728 dictionary object.
729
730 .. index::
731 single: __name__ (module attribute)
732 single: __doc__ (module attribute)
733 single: __file__ (module attribute)
734 pair: module; namespace
735
736 Predefined (writable) attributes: :attr:`__name__` is the module's name;
737 :attr:`__doc__` is the module's documentation string, or ``None`` if
738 unavailable; :attr:`__file__` is the pathname of the file from which the module
739 was loaded, if it was loaded from a file. The :attr:`__file__` attribute is not
740 present for C modules that are statically linked into the interpreter; for
741 extension modules loaded dynamically from a shared library, it is the pathname
742 of the shared library file.
743
Georg Brandl85eb8c12007-08-31 16:33:38 +0000744.. XXX "Classes" and "Instances" is outdated!
745 see http://www.python.org/doc/newstyle.html for newstyle information
746
747Custom classes
Georg Brandl116aa622007-08-15 14:28:22 +0000748 Class objects are created by class definitions (see section :ref:`class`). A
749 class has a namespace implemented by a dictionary object. Class attribute
750 references are translated to lookups in this dictionary, e.g., ``C.x`` is
751 translated to ``C.__dict__["x"]``. When the attribute name is not found
752 there, the attribute search continues in the base classes. The search is
753 depth-first, left-to-right in the order of occurrence in the base class list.
754
Georg Brandl85eb8c12007-08-31 16:33:38 +0000755 .. XXX document descriptors and new MRO
756
Georg Brandl116aa622007-08-15 14:28:22 +0000757 .. index::
758 object: class
759 object: class instance
760 object: instance
761 pair: class object; call
762 single: container
763 object: dictionary
764 pair: class; attribute
765
766 When a class attribute reference (for class :class:`C`, say) would yield a
767 user-defined function object or an unbound user-defined method object whose
768 associated class is either :class:`C` or one of its base classes, it is
769 transformed into an unbound user-defined method object whose :attr:`im_class`
770 attribute is :class:`C`. When it would yield a class method object, it is
771 transformed into a bound user-defined method object whose :attr:`im_class`
772 and :attr:`im_self` attributes are both :class:`C`. When it would yield a
773 static method object, it is transformed into the object wrapped by the static
774 method object. See section :ref:`descriptors` for another way in which
775 attributes retrieved from a class may differ from those actually contained in
776 its :attr:`__dict__`.
777
778 .. index:: triple: class; attribute; assignment
779
780 Class attribute assignments update the class's dictionary, never the dictionary
781 of a base class.
782
783 .. index:: pair: class object; call
784
785 A class object can be called (see above) to yield a class instance (see below).
786
787 .. index::
788 single: __name__ (class attribute)
789 single: __module__ (class attribute)
790 single: __dict__ (class attribute)
791 single: __bases__ (class attribute)
792 single: __doc__ (class attribute)
793
794 Special attributes: :attr:`__name__` is the class name; :attr:`__module__` is
795 the module name in which the class was defined; :attr:`__dict__` is the
796 dictionary containing the class's namespace; :attr:`__bases__` is a tuple
797 (possibly empty or a singleton) containing the base classes, in the order of
798 their occurrence in the base class list; :attr:`__doc__` is the class's
799 documentation string, or None if undefined.
800
801Class instances
802 .. index::
803 object: class instance
804 object: instance
805 pair: class; instance
806 pair: class instance; attribute
807
808 A class instance is created by calling a class object (see above). A class
809 instance has a namespace implemented as a dictionary which is the first place in
810 which attribute references are searched. When an attribute is not found there,
811 and the instance's class has an attribute by that name, the search continues
812 with the class attributes. If a class attribute is found that is a user-defined
813 function object or an unbound user-defined method object whose associated class
814 is the class (call it :class:`C`) of the instance for which the attribute
815 reference was initiated or one of its bases, it is transformed into a bound
816 user-defined method object whose :attr:`im_class` attribute is :class:`C` and
817 whose :attr:`im_self` attribute is the instance. Static method and class method
818 objects are also transformed, as if they had been retrieved from class
819 :class:`C`; see above under "Classes". See section :ref:`descriptors` for
820 another way in which attributes of a class retrieved via its instances may
821 differ from the objects actually stored in the class's :attr:`__dict__`. If no
822 class attribute is found, and the object's class has a :meth:`__getattr__`
823 method, that is called to satisfy the lookup.
824
825 .. index:: triple: class instance; attribute; assignment
826
827 Attribute assignments and deletions update the instance's dictionary, never a
828 class's dictionary. If the class has a :meth:`__setattr__` or
829 :meth:`__delattr__` method, this is called instead of updating the instance
830 dictionary directly.
831
832 .. index::
833 object: numeric
834 object: sequence
835 object: mapping
836
837 Class instances can pretend to be numbers, sequences, or mappings if they have
838 methods with certain special names. See section :ref:`specialnames`.
839
840 .. index::
841 single: __dict__ (instance attribute)
842 single: __class__ (instance attribute)
843
844 Special attributes: :attr:`__dict__` is the attribute dictionary;
845 :attr:`__class__` is the instance's class.
846
847Files
848 .. index::
849 object: file
850 builtin: open
851 single: popen() (in module os)
852 single: makefile() (socket method)
853 single: sys.stdin
854 single: sys.stdout
855 single: sys.stderr
856 single: stdio
857 single: stdin (in module sys)
858 single: stdout (in module sys)
859 single: stderr (in module sys)
860
861 A file object represents an open file. File objects are created by the
862 :func:`open` built-in function, and also by :func:`os.popen`,
863 :func:`os.fdopen`, and the :meth:`makefile` method of socket objects (and
864 perhaps by other functions or methods provided by extension modules). The
865 objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are initialized to
866 file objects corresponding to the interpreter's standard input, output and
867 error streams. See :ref:`bltin-file-objects` for complete documentation of
868 file objects.
869
870Internal types
871 .. index::
872 single: internal type
873 single: types, internal
874
875 A few types used internally by the interpreter are exposed to the user. Their
876 definitions may change with future versions of the interpreter, but they are
877 mentioned here for completeness.
878
879 Code objects
880 .. index::
881 single: bytecode
882 object: code
883
884 Code objects represent *byte-compiled* executable Python code, or *bytecode*.
885 The difference between a code object and a function object is that the function
886 object contains an explicit reference to the function's globals (the module in
887 which it was defined), while a code object contains no context; also the default
888 argument values are stored in the function object, not in the code object
889 (because they represent values calculated at run-time). Unlike function
890 objects, code objects are immutable and contain no references (directly or
891 indirectly) to mutable objects.
892
893 Special read-only attributes: :attr:`co_name` gives the function name;
894 :attr:`co_argcount` is the number of positional arguments (including arguments
895 with default values); :attr:`co_nlocals` is the number of local variables used
896 by the function (including arguments); :attr:`co_varnames` is a tuple containing
897 the names of the local variables (starting with the argument names);
898 :attr:`co_cellvars` is a tuple containing the names of local variables that are
899 referenced by nested functions; :attr:`co_freevars` is a tuple containing the
900 names of free variables; :attr:`co_code` is a string representing the sequence
901 of bytecode instructions; :attr:`co_consts` is a tuple containing the literals
902 used by the bytecode; :attr:`co_names` is a tuple containing the names used by
903 the bytecode; :attr:`co_filename` is the filename from which the code was
904 compiled; :attr:`co_firstlineno` is the first line number of the function;
905 :attr:`co_lnotab` is a string encoding the mapping from byte code offsets to
906 line numbers (for details see the source code of the interpreter);
907 :attr:`co_stacksize` is the required stack size (including local variables);
908 :attr:`co_flags` is an integer encoding a number of flags for the interpreter.
909
910 .. index::
911 single: co_argcount (code object attribute)
912 single: co_code (code object attribute)
913 single: co_consts (code object attribute)
914 single: co_filename (code object attribute)
915 single: co_firstlineno (code object attribute)
916 single: co_flags (code object attribute)
917 single: co_lnotab (code object attribute)
918 single: co_name (code object attribute)
919 single: co_names (code object attribute)
920 single: co_nlocals (code object attribute)
921 single: co_stacksize (code object attribute)
922 single: co_varnames (code object attribute)
923 single: co_cellvars (code object attribute)
924 single: co_freevars (code object attribute)
925
926 .. index:: object: generator
927
928 The following flag bits are defined for :attr:`co_flags`: bit ``0x04`` is set if
929 the function uses the ``*arguments`` syntax to accept an arbitrary number of
930 positional arguments; bit ``0x08`` is set if the function uses the
931 ``**keywords`` syntax to accept arbitrary keyword arguments; bit ``0x20`` is set
932 if the function is a generator.
933
934 Future feature declarations (``from __future__ import division``) also use bits
935 in :attr:`co_flags` to indicate whether a code object was compiled with a
936 particular feature enabled: bit ``0x2000`` is set if the function was compiled
937 with future division enabled; bits ``0x10`` and ``0x1000`` were used in earlier
938 versions of Python.
939
940 Other bits in :attr:`co_flags` are reserved for internal use.
941
942 .. index:: single: documentation string
943
944 If a code object represents a function, the first item in :attr:`co_consts` is
945 the documentation string of the function, or ``None`` if undefined.
946
947 Frame objects
948 .. index:: object: frame
949
950 Frame objects represent execution frames. They may occur in traceback objects
951 (see below).
952
953 .. index::
954 single: f_back (frame attribute)
955 single: f_code (frame attribute)
956 single: f_globals (frame attribute)
957 single: f_locals (frame attribute)
958 single: f_lasti (frame attribute)
959 single: f_builtins (frame attribute)
960
961 Special read-only attributes: :attr:`f_back` is to the previous stack frame
962 (towards the caller), or ``None`` if this is the bottom stack frame;
963 :attr:`f_code` is the code object being executed in this frame; :attr:`f_locals`
964 is the dictionary used to look up local variables; :attr:`f_globals` is used for
965 global variables; :attr:`f_builtins` is used for built-in (intrinsic) names;
966 :attr:`f_lasti` gives the precise instruction (this is an index into the
967 bytecode string of the code object).
968
969 .. index::
970 single: f_trace (frame attribute)
971 single: f_exc_type (frame attribute)
972 single: f_exc_value (frame attribute)
973 single: f_exc_traceback (frame attribute)
974 single: f_lineno (frame attribute)
975
976 Special writable attributes: :attr:`f_trace`, if not ``None``, is a function
977 called at the start of each source code line (this is used by the debugger);
978 :attr:`f_exc_type`, :attr:`f_exc_value`, :attr:`f_exc_traceback` represent the
979 last exception raised in the parent frame provided another exception was ever
980 raised in the current frame (in all other cases they are None); :attr:`f_lineno`
981 is the current line number of the frame --- writing to this from within a trace
982 function jumps to the given line (only for the bottom-most frame). A debugger
983 can implement a Jump command (aka Set Next Statement) by writing to f_lineno.
984
985 Traceback objects
986 .. index::
987 object: traceback
988 pair: stack; trace
989 pair: exception; handler
990 pair: execution; stack
991 single: exc_info (in module sys)
992 single: exc_traceback (in module sys)
993 single: last_traceback (in module sys)
994 single: sys.exc_info
995 single: sys.last_traceback
996
997 Traceback objects represent a stack trace of an exception. A traceback object
998 is created when an exception occurs. When the search for an exception handler
999 unwinds the execution stack, at each unwound level a traceback object is
1000 inserted in front of the current traceback. When an exception handler is
1001 entered, the stack trace is made available to the program. (See section
1002 :ref:`try`.) It is accessible as the third item of the
1003 tuple returned by ``sys.exc_info()``. When the program contains no suitable
1004 handler, the stack trace is written (nicely formatted) to the standard error
1005 stream; if the interpreter is interactive, it is also made available to the user
1006 as ``sys.last_traceback``.
1007
1008 .. index::
1009 single: tb_next (traceback attribute)
1010 single: tb_frame (traceback attribute)
1011 single: tb_lineno (traceback attribute)
1012 single: tb_lasti (traceback attribute)
1013 statement: try
1014
1015 Special read-only attributes: :attr:`tb_next` is the next level in the stack
1016 trace (towards the frame where the exception occurred), or ``None`` if there is
1017 no next level; :attr:`tb_frame` points to the execution frame of the current
1018 level; :attr:`tb_lineno` gives the line number where the exception occurred;
1019 :attr:`tb_lasti` indicates the precise instruction. The line number and last
1020 instruction in the traceback may differ from the line number of its frame object
1021 if the exception occurred in a :keyword:`try` statement with no matching except
1022 clause or with a finally clause.
1023
1024 Slice objects
1025 .. index:: builtin: slice
1026
1027 Slice objects are used to represent slices when *extended slice syntax* is used.
1028 This is a slice using two colons, or multiple slices or ellipses separated by
1029 commas, e.g., ``a[i:j:step]``, ``a[i:j, k:l]``, or ``a[..., i:j]``. They are
1030 also created by the built-in :func:`slice` function.
1031
1032 .. index::
1033 single: start (slice object attribute)
1034 single: stop (slice object attribute)
1035 single: step (slice object attribute)
1036
1037 Special read-only attributes: :attr:`start` is the lower bound; :attr:`stop` is
1038 the upper bound; :attr:`step` is the step value; each is ``None`` if omitted.
1039 These attributes can have any type.
1040
1041 Slice objects support one method:
1042
1043
1044 .. method:: slice.indices(self, length)
1045
1046 This method takes a single integer argument *length* and computes information
1047 about the extended slice that the slice object would describe if applied to a
1048 sequence of *length* items. It returns a tuple of three integers; respectively
1049 these are the *start* and *stop* indices and the *step* or stride length of the
1050 slice. Missing or out-of-bounds indices are handled in a manner consistent with
1051 regular slices.
1052
1053 .. versionadded:: 2.3
1054
1055 Static method objects
1056 Static method objects provide a way of defeating the transformation of function
1057 objects to method objects described above. A static method object is a wrapper
1058 around any other object, usually a user-defined method object. When a static
1059 method object is retrieved from a class or a class instance, the object actually
1060 returned is the wrapped object, which is not subject to any further
1061 transformation. Static method objects are not themselves callable, although the
1062 objects they wrap usually are. Static method objects are created by the built-in
1063 :func:`staticmethod` constructor.
1064
1065 Class method objects
1066 A class method object, like a static method object, is a wrapper around another
1067 object that alters the way in which that object is retrieved from classes and
1068 class instances. The behaviour of class method objects upon such retrieval is
1069 described above, under "User-defined methods". Class method objects are created
1070 by the built-in :func:`classmethod` constructor.
1071
1072 .. % Internal types
1073
Georg Brandl116aa622007-08-15 14:28:22 +00001074.. % =========================================================================
1075
1076
1077.. _specialnames:
1078
1079Special method names
1080====================
1081
1082.. index::
1083 pair: operator; overloading
1084 single: __getitem__() (mapping object method)
1085
1086A class can implement certain operations that are invoked by special syntax
1087(such as arithmetic operations or subscripting and slicing) by defining methods
1088with special names. This is Python's approach to :dfn:`operator overloading`,
1089allowing classes to define their own behavior with respect to language
1090operators. For instance, if a class defines a method named :meth:`__getitem__`,
Georg Brandl85eb8c12007-08-31 16:33:38 +00001091and ``x`` is an instance of this class, then ``x[i]`` is equivalent to
Georg Brandl116aa622007-08-15 14:28:22 +00001092``x.__getitem__(i)``. Except where mentioned, attempts to execute an operation
1093raise an exception when no appropriate method is defined.
1094
Georg Brandl85eb8c12007-08-31 16:33:38 +00001095.. XXX above translation is not correct for new-style classes!
1096
Georg Brandl116aa622007-08-15 14:28:22 +00001097When implementing a class that emulates any built-in type, it is important that
1098the emulation only be implemented to the degree that it makes sense for the
1099object being modelled. For example, some sequences may work well with retrieval
1100of individual elements, but extracting a slice may not make sense. (One example
1101of this is the :class:`NodeList` interface in the W3C's Document Object Model.)
1102
1103
1104.. _customization:
1105
1106Basic customization
1107-------------------
1108
1109
1110.. method:: object.__new__(cls[, ...])
1111
1112 Called to create a new instance of class *cls*. :meth:`__new__` is a static
1113 method (special-cased so you need not declare it as such) that takes the class
1114 of which an instance was requested as its first argument. The remaining
1115 arguments are those passed to the object constructor expression (the call to the
1116 class). The return value of :meth:`__new__` should be the new object instance
1117 (usually an instance of *cls*).
1118
1119 Typical implementations create a new instance of the class by invoking the
1120 superclass's :meth:`__new__` method using ``super(currentclass,
1121 cls).__new__(cls[, ...])`` with appropriate arguments and then modifying the
1122 newly-created instance as necessary before returning it.
1123
1124 If :meth:`__new__` returns an instance of *cls*, then the new instance's
1125 :meth:`__init__` method will be invoked like ``__init__(self[, ...])``, where
1126 *self* is the new instance and the remaining arguments are the same as were
1127 passed to :meth:`__new__`.
1128
1129 If :meth:`__new__` does not return an instance of *cls*, then the new instance's
1130 :meth:`__init__` method will not be invoked.
1131
1132 :meth:`__new__` is intended mainly to allow subclasses of immutable types (like
1133 int, str, or tuple) to customize instance creation.
1134
1135
1136.. method:: object.__init__(self[, ...])
1137
1138 .. index:: pair: class; constructor
1139
1140 Called when the instance is created. The arguments are those passed to the
1141 class constructor expression. If a base class has an :meth:`__init__` method,
1142 the derived class's :meth:`__init__` method, if any, must explicitly call it to
1143 ensure proper initialization of the base class part of the instance; for
1144 example: ``BaseClass.__init__(self, [args...])``. As a special constraint on
1145 constructors, no value may be returned; doing so will cause a :exc:`TypeError`
1146 to be raised at runtime.
1147
1148
1149.. method:: object.__del__(self)
1150
1151 .. index::
1152 single: destructor
1153 statement: del
1154
1155 Called when the instance is about to be destroyed. This is also called a
1156 destructor. If a base class has a :meth:`__del__` method, the derived class's
1157 :meth:`__del__` method, if any, must explicitly call it to ensure proper
1158 deletion of the base class part of the instance. Note that it is possible
1159 (though not recommended!) for the :meth:`__del__` method to postpone destruction
1160 of the instance by creating a new reference to it. It may then be called at a
1161 later time when this new reference is deleted. It is not guaranteed that
1162 :meth:`__del__` methods are called for objects that still exist when the
1163 interpreter exits.
1164
1165 .. note::
1166
1167 ``del x`` doesn't directly call ``x.__del__()`` --- the former decrements
1168 the reference count for ``x`` by one, and the latter is only called when
1169 ``x``'s reference count reaches zero. Some common situations that may
1170 prevent the reference count of an object from going to zero include:
1171 circular references between objects (e.g., a doubly-linked list or a tree
1172 data structure with parent and child pointers); a reference to the object
1173 on the stack frame of a function that caught an exception (the traceback
1174 stored in ``sys.exc_info()[2]`` keeps the stack frame alive); or a
1175 reference to the object on the stack frame that raised an unhandled
1176 exception in interactive mode (the traceback stored in
1177 ``sys.last_traceback`` keeps the stack frame alive). The first situation
1178 can only be remedied by explicitly breaking the cycles; the latter two
1179 situations can be resolved by storing ``None`` in ``sys.last_traceback``.
1180 Circular references which are garbage are detected when the option cycle
1181 detector is enabled (it's on by default), but can only be cleaned up if
1182 there are no Python- level :meth:`__del__` methods involved. Refer to the
1183 documentation for the :mod:`gc` module for more information about how
1184 :meth:`__del__` methods are handled by the cycle detector, particularly
1185 the description of the ``garbage`` value.
1186
1187 .. warning::
1188
1189 Due to the precarious circumstances under which :meth:`__del__` methods are
1190 invoked, exceptions that occur during their execution are ignored, and a warning
1191 is printed to ``sys.stderr`` instead. Also, when :meth:`__del__` is invoked in
1192 response to a module being deleted (e.g., when execution of the program is
1193 done), other globals referenced by the :meth:`__del__` method may already have
1194 been deleted. For this reason, :meth:`__del__` methods should do the absolute
1195 minimum needed to maintain external invariants. Starting with version 1.5,
1196 Python guarantees that globals whose name begins with a single underscore are
1197 deleted from their module before other globals are deleted; if no other
1198 references to such globals exist, this may help in assuring that imported
1199 modules are still available at the time when the :meth:`__del__` method is
1200 called.
1201
1202
1203.. method:: object.__repr__(self)
1204
1205 .. index:: builtin: repr
1206
1207 Called by the :func:`repr` built-in function and by string conversions (reverse
1208 quotes) to compute the "official" string representation of an object. If at all
1209 possible, this should look like a valid Python expression that could be used to
1210 recreate an object with the same value (given an appropriate environment). If
1211 this is not possible, a string of the form ``<...some useful description...>``
1212 should be returned. The return value must be a string object. If a class
1213 defines :meth:`__repr__` but not :meth:`__str__`, then :meth:`__repr__` is also
1214 used when an "informal" string representation of instances of that class is
1215 required.
1216
1217 .. index::
1218 pair: string; conversion
1219 pair: reverse; quotes
1220 pair: backward; quotes
1221 single: back-quotes
1222
1223 This is typically used for debugging, so it is important that the representation
1224 is information-rich and unambiguous.
1225
1226
1227.. method:: object.__str__(self)
1228
1229 .. index::
1230 builtin: str
Georg Brandl4b491312007-08-31 09:22:56 +00001231 builtin: print
Georg Brandl116aa622007-08-15 14:28:22 +00001232
Georg Brandl4b491312007-08-31 09:22:56 +00001233 Called by the :func:`str` built-in function and by the :func:`print`
1234 function to compute the "informal" string representation of an object. This
Georg Brandl116aa622007-08-15 14:28:22 +00001235 differs from :meth:`__repr__` in that it does not have to be a valid Python
1236 expression: a more convenient or concise representation may be used instead.
1237 The return value must be a string object.
1238
1239
Georg Brandl4b491312007-08-31 09:22:56 +00001240.. method:: object.__format__(self, format_spec)
1241
1242 .. index::
1243 pair: string; conversion
1244 builtin: str
1245 builtin: print
1246
1247 Called by the :func:`format` built-in function (and by extension, the
1248 :meth:`format` method of class :class:`str`) to produce a "formatted"
1249 string representation of an object. The ``format_spec`` argument is
1250 a string that contains a description of the formatting options desired.
1251 The interpretation of the ``format_spec`` argument is up to the type
1252 implementing :meth:`__format__`, however most classes will either
1253 delegate formatting to one of the built-in types, or use a similar
1254 formatting option syntax.
1255
1256 See :ref:`formatspec` for a description of the standard formatting syntax.
1257
1258 The return value must be a string object.
1259
1260
Georg Brandl116aa622007-08-15 14:28:22 +00001261.. method:: object.__lt__(self, other)
1262 object.__le__(self, other)
1263 object.__eq__(self, other)
1264 object.__ne__(self, other)
1265 object.__gt__(self, other)
1266 object.__ge__(self, other)
1267
1268 .. versionadded:: 2.1
1269
1270 These are the so-called "rich comparison" methods, and are called for comparison
1271 operators in preference to :meth:`__cmp__` below. The correspondence between
1272 operator symbols and method names is as follows: ``x<y`` calls ``x.__lt__(y)``,
1273 ``x<=y`` calls ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` calls
1274 ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` calls
1275 ``x.__ge__(y)``.
1276
1277 A rich comparison method may return the singleton ``NotImplemented`` if it does
1278 not implement the operation for a given pair of arguments. By convention,
1279 ``False`` and ``True`` are returned for a successful comparison. However, these
1280 methods can return any value, so if the comparison operator is used in a Boolean
1281 context (e.g., in the condition of an ``if`` statement), Python will call
1282 :func:`bool` on the value to determine if the result is true or false.
1283
1284 There are no implied relationships among the comparison operators. The truth of
1285 ``x==y`` does not imply that ``x!=y`` is false. Accordingly, when defining
1286 :meth:`__eq__`, one should also define :meth:`__ne__` so that the operators will
1287 behave as expected.
1288
1289 There are no reflected (swapped-argument) versions of these methods (to be used
1290 when the left argument does not support the operation but the right argument
1291 does); rather, :meth:`__lt__` and :meth:`__gt__` are each other's reflection,
1292 :meth:`__le__` and :meth:`__ge__` are each other's reflection, and
1293 :meth:`__eq__` and :meth:`__ne__` are their own reflection.
1294
1295 Arguments to rich comparison methods are never coerced.
1296
1297
1298.. method:: object.__cmp__(self, other)
1299
1300 .. index::
1301 builtin: cmp
1302 single: comparisons
1303
1304 Called by comparison operations if rich comparison (see above) is not defined.
1305 Should return a negative integer if ``self < other``, zero if ``self == other``,
1306 a positive integer if ``self > other``. If no :meth:`__cmp__`, :meth:`__eq__`
1307 or :meth:`__ne__` operation is defined, class instances are compared by object
1308 identity ("address"). See also the description of :meth:`__hash__` for some
1309 important notes on creating objects which support custom comparison operations
1310 and are usable as dictionary keys. (Note: the restriction that exceptions are
1311 not propagated by :meth:`__cmp__` has been removed since Python 1.5.)
1312
1313
1314.. method:: object.__rcmp__(self, other)
1315
1316 .. versionchanged:: 2.1
1317 No longer supported.
1318
1319
1320.. method:: object.__hash__(self)
1321
1322 .. index::
1323 object: dictionary
1324 builtin: hash
1325
1326 Called for the key object for dictionary operations, and by the built-in
1327 function :func:`hash`. Should return a 32-bit integer usable as a hash value
1328 for dictionary operations. The only required property is that objects which
1329 compare equal have the same hash value; it is advised to somehow mix together
1330 (e.g., using exclusive or) the hash values for the components of the object that
1331 also play a part in comparison of objects. If a class does not define a
1332 :meth:`__cmp__` method it should not define a :meth:`__hash__` operation either;
1333 if it defines :meth:`__cmp__` or :meth:`__eq__` but not :meth:`__hash__`, its
1334 instances will not be usable as dictionary keys. If a class defines mutable
1335 objects and implements a :meth:`__cmp__` or :meth:`__eq__` method, it should not
1336 implement :meth:`__hash__`, since the dictionary implementation requires that a
1337 key's hash value is immutable (if the object's hash value changes, it will be in
1338 the wrong hash bucket).
1339
1340 .. versionchanged:: 2.5
1341 :meth:`__hash__` may now also return a long integer object; the 32-bit integer
1342 is then derived from the hash of that object.
1343
1344 .. index:: single: __cmp__() (object method)
1345
1346
1347.. method:: object.__bool__(self)
1348
1349 .. index:: single: __len__() (mapping object method)
1350
1351 Called to implement truth value testing, and the built-in operation ``bool()``;
1352 should return ``False`` or ``True``. When this method is not defined,
1353 :meth:`__len__` is called, if it is defined (see below) and ``True`` is returned
1354 when the length is not zero. If a class defines neither :meth:`__len__` nor
1355 :meth:`__bool__`, all its instances are considered true.
1356
1357
1358.. method:: object.__unicode__(self)
1359
1360 .. index:: builtin: unicode
1361
1362 Called to implement :func:`unicode` builtin; should return a Unicode object.
1363 When this method is not defined, string conversion is attempted, and the result
1364 of string conversion is converted to Unicode using the system default encoding.
1365
1366
1367.. _attribute-access:
1368
1369Customizing attribute access
1370----------------------------
1371
1372The following methods can be defined to customize the meaning of attribute
1373access (use of, assignment to, or deletion of ``x.name``) for class instances.
1374
Georg Brandl85eb8c12007-08-31 16:33:38 +00001375.. XXX explain how descriptors interfere here!
1376
Georg Brandl116aa622007-08-15 14:28:22 +00001377
1378.. method:: object.__getattr__(self, name)
1379
1380 Called when an attribute lookup has not found the attribute in the usual places
1381 (i.e. it is not an instance attribute nor is it found in the class tree for
1382 ``self``). ``name`` is the attribute name. This method should return the
1383 (computed) attribute value or raise an :exc:`AttributeError` exception.
1384
Georg Brandl116aa622007-08-15 14:28:22 +00001385 Note that if the attribute is found through the normal mechanism,
1386 :meth:`__getattr__` is not called. (This is an intentional asymmetry between
1387 :meth:`__getattr__` and :meth:`__setattr__`.) This is done both for efficiency
1388 reasons and because otherwise :meth:`__setattr__` would have no way to access
1389 other attributes of the instance. Note that at least for instance variables,
1390 you can fake total control by not inserting any values in the instance attribute
1391 dictionary (but instead inserting them in another object). See the
Georg Brandl85eb8c12007-08-31 16:33:38 +00001392 :meth:`__getattribute__` method below for a way to actually get total control
1393 over attribute access.
Georg Brandl116aa622007-08-15 14:28:22 +00001394
1395
1396.. method:: object.__getattribute__(self, name)
1397
1398 Called unconditionally to implement attribute accesses for instances of the
1399 class. If the class also defines :meth:`__getattr__`, the latter will not be
1400 called unless :meth:`__getattribute__` either calls it explicitly or raises an
1401 :exc:`AttributeError`. This method should return the (computed) attribute value
1402 or raise an :exc:`AttributeError` exception. In order to avoid infinite
1403 recursion in this method, its implementation should always call the base class
1404 method with the same name to access any attributes it needs, for example,
1405 ``object.__getattribute__(self, name)``.
1406
1407
Georg Brandl85eb8c12007-08-31 16:33:38 +00001408.. method:: object.__setattr__(self, name, value)
1409
1410 Called when an attribute assignment is attempted. This is called instead of
1411 the normal mechanism (i.e. store the value in the instance dictionary).
1412 *name* is the attribute name, *value* is the value to be assigned to it.
1413
1414 If :meth:`__setattr__` wants to assign to an instance attribute, it should
1415 call the base class method with the same name, for example,
1416 ``object.__setattr__(self, name, value)``.
1417
1418
1419.. method:: object.__delattr__(self, name)
1420
1421 Like :meth:`__setattr__` but for attribute deletion instead of assignment. This
1422 should only be implemented if ``del obj.name`` is meaningful for the object.
1423
1424
Georg Brandl116aa622007-08-15 14:28:22 +00001425.. _descriptors:
1426
1427Implementing Descriptors
1428^^^^^^^^^^^^^^^^^^^^^^^^
1429
1430The following methods only apply when an instance of the class containing the
1431method (a so-called *descriptor* class) appears in the class dictionary of
Georg Brandl85eb8c12007-08-31 16:33:38 +00001432another class, known as the *owner* class. In the examples below, "the
Georg Brandl116aa622007-08-15 14:28:22 +00001433attribute" refers to the attribute whose name is the key of the property in the
Georg Brandl85eb8c12007-08-31 16:33:38 +00001434owner class' :attr:`__dict__`.
Georg Brandl116aa622007-08-15 14:28:22 +00001435
1436
1437.. method:: object.__get__(self, instance, owner)
1438
1439 Called to get the attribute of the owner class (class attribute access) or of an
1440 instance of that class (instance attribute access). *owner* is always the owner
1441 class, while *instance* is the instance that the attribute was accessed through,
1442 or ``None`` when the attribute is accessed through the *owner*. This method
1443 should return the (computed) attribute value or raise an :exc:`AttributeError`
1444 exception.
1445
1446
1447.. method:: object.__set__(self, instance, value)
1448
1449 Called to set the attribute on an instance *instance* of the owner class to a
1450 new value, *value*.
1451
1452
1453.. method:: object.__delete__(self, instance)
1454
1455 Called to delete the attribute on an instance *instance* of the owner class.
1456
1457
1458.. _descriptor-invocation:
1459
1460Invoking Descriptors
1461^^^^^^^^^^^^^^^^^^^^
1462
1463In general, a descriptor is an object attribute with "binding behavior", one
1464whose attribute access has been overridden by methods in the descriptor
1465protocol: :meth:`__get__`, :meth:`__set__`, and :meth:`__delete__`. If any of
1466those methods are defined for an object, it is said to be a descriptor.
1467
1468The default behavior for attribute access is to get, set, or delete the
1469attribute from an object's dictionary. For instance, ``a.x`` has a lookup chain
1470starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and
1471continuing through the base classes of ``type(a)`` excluding metaclasses.
1472
1473However, if the looked-up value is an object defining one of the descriptor
1474methods, then Python may override the default behavior and invoke the descriptor
1475method instead. Where this occurs in the precedence chain depends on which
1476descriptor methods were defined and how they were called. Note that descriptors
1477are only invoked for new style objects or classes (ones that subclass
1478:class:`object()` or :class:`type()`).
1479
1480The starting point for descriptor invocation is a binding, ``a.x``. How the
1481arguments are assembled depends on ``a``:
1482
1483Direct Call
1484 The simplest and least common call is when user code directly invokes a
1485 descriptor method: ``x.__get__(a)``.
1486
1487Instance Binding
Georg Brandl85eb8c12007-08-31 16:33:38 +00001488 If binding to an object instance, ``a.x`` is transformed into the call:
Georg Brandl116aa622007-08-15 14:28:22 +00001489 ``type(a).__dict__['x'].__get__(a, type(a))``.
1490
1491Class Binding
Georg Brandl85eb8c12007-08-31 16:33:38 +00001492 If binding to a class, ``A.x`` is transformed into the call:
Georg Brandl116aa622007-08-15 14:28:22 +00001493 ``A.__dict__['x'].__get__(None, A)``.
1494
1495Super Binding
1496 If ``a`` is an instance of :class:`super`, then the binding ``super(B,
1497 obj).m()`` searches ``obj.__class__.__mro__`` for the base class ``A``
1498 immediately preceding ``B`` and then invokes the descriptor with the call:
1499 ``A.__dict__['m'].__get__(obj, A)``.
1500
1501For instance bindings, the precedence of descriptor invocation depends on the
Guido van Rossum04110fb2007-08-24 16:32:05 +00001502which descriptor methods are defined. Normally, data descriptors define both
1503:meth:`__get__` and :meth:`__set__`, while non-data descriptors have just the
Georg Brandl116aa622007-08-15 14:28:22 +00001504:meth:`__get__` method. Data descriptors always override a redefinition in an
1505instance dictionary. In contrast, non-data descriptors can be overridden by
Guido van Rossum04110fb2007-08-24 16:32:05 +00001506instances. [#]_
Georg Brandl116aa622007-08-15 14:28:22 +00001507
1508Python methods (including :func:`staticmethod` and :func:`classmethod`) are
1509implemented as non-data descriptors. Accordingly, instances can redefine and
1510override methods. This allows individual instances to acquire behaviors that
1511differ from other instances of the same class.
1512
1513The :func:`property` function is implemented as a data descriptor. Accordingly,
1514instances cannot override the behavior of a property.
1515
1516
1517.. _slots:
1518
1519__slots__
1520^^^^^^^^^
1521
Georg Brandl85eb8c12007-08-31 16:33:38 +00001522By default, instances of classes have a dictionary for attribute storage. This
1523wastes space for objects having very few instance variables. The space
1524consumption can become acute when creating large numbers of instances.
Georg Brandl116aa622007-08-15 14:28:22 +00001525
Georg Brandl85eb8c12007-08-31 16:33:38 +00001526The default can be overridden by defining *__slots__* in a class definition.
1527The *__slots__* declaration takes a sequence of instance variables and reserves
1528just enough space in each instance to hold a value for each variable. Space is
1529saved because *__dict__* is not created for each instance.
Georg Brandl116aa622007-08-15 14:28:22 +00001530
1531
Georg Brandl85eb8c12007-08-31 16:33:38 +00001532.. data:: object.__slots__
Georg Brandl116aa622007-08-15 14:28:22 +00001533
Georg Brandl85eb8c12007-08-31 16:33:38 +00001534 This class variable can be assigned a string, iterable, or sequence of
1535 strings with variable names used by instances. If defined in a new-style
1536 class, *__slots__* reserves space for the declared variables and prevents the
1537 automatic creation of *__dict__* and *__weakref__* for each instance.
Georg Brandl116aa622007-08-15 14:28:22 +00001538
1539 .. versionadded:: 2.2
1540
1541Notes on using *__slots__*
1542
1543* Without a *__dict__* variable, instances cannot be assigned new variables not
1544 listed in the *__slots__* definition. Attempts to assign to an unlisted
1545 variable name raises :exc:`AttributeError`. If dynamic assignment of new
Georg Brandl85eb8c12007-08-31 16:33:38 +00001546 variables is desired, then add ``'__dict__'`` to the sequence of strings in
1547 the *__slots__* declaration.
Georg Brandl116aa622007-08-15 14:28:22 +00001548
1549 .. versionchanged:: 2.3
1550 Previously, adding ``'__dict__'`` to the *__slots__* declaration would not
1551 enable the assignment of new attributes not specifically listed in the sequence
1552 of instance variable names.
1553
1554* Without a *__weakref__* variable for each instance, classes defining
1555 *__slots__* do not support weak references to its instances. If weak reference
1556 support is needed, then add ``'__weakref__'`` to the sequence of strings in the
1557 *__slots__* declaration.
1558
1559 .. versionchanged:: 2.3
1560 Previously, adding ``'__weakref__'`` to the *__slots__* declaration would not
1561 enable support for weak references.
1562
1563* *__slots__* are implemented at the class level by creating descriptors
1564 (:ref:`descriptors`) for each variable name. As a result, class attributes
1565 cannot be used to set default values for instance variables defined by
1566 *__slots__*; otherwise, the class attribute would overwrite the descriptor
1567 assignment.
1568
1569* If a class defines a slot also defined in a base class, the instance variable
1570 defined by the base class slot is inaccessible (except by retrieving its
1571 descriptor directly from the base class). This renders the meaning of the
1572 program undefined. In the future, a check may be added to prevent this.
1573
1574* The action of a *__slots__* declaration is limited to the class where it is
1575 defined. As a result, subclasses will have a *__dict__* unless they also define
1576 *__slots__*.
1577
1578* *__slots__* do not work for classes derived from "variable-length" built-in
1579 types such as :class:`long`, :class:`str` and :class:`tuple`.
1580
1581* Any non-string iterable may be assigned to *__slots__*. Mappings may also be
1582 used; however, in the future, special meaning may be assigned to the values
1583 corresponding to each key.
1584
1585* *__class__* assignment works only if both classes have the same *__slots__*.
1586
1587 .. versionchanged:: 2.6
1588 Previously, *__class__* assignment raised an error if either new or old class
1589 had *__slots__*.
1590
1591
1592.. _metaclasses:
1593
1594Customizing class creation
1595--------------------------
1596
Georg Brandl85eb8c12007-08-31 16:33:38 +00001597By default, classes are constructed using :func:`type`. A class definition is
1598read into a separate namespace and the value of class name is bound to the
1599result of ``type(name, bases, dict)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001600
1601When the class definition is read, if *__metaclass__* is defined then the
1602callable assigned to it will be called instead of :func:`type`. The allows
1603classes or functions to be written which monitor or alter the class creation
1604process:
1605
1606* Modifying the class dictionary prior to the class being created.
1607
1608* Returning an instance of another class -- essentially performing the role of a
1609 factory function.
1610
Georg Brandl85eb8c12007-08-31 16:33:38 +00001611.. XXX needs to be updated for the "new metaclasses" PEP
Georg Brandl116aa622007-08-15 14:28:22 +00001612.. data:: __metaclass__
1613
1614 This variable can be any callable accepting arguments for ``name``, ``bases``,
1615 and ``dict``. Upon class creation, the callable is used instead of the built-in
1616 :func:`type`.
1617
1618 .. versionadded:: 2.2
1619
1620The appropriate metaclass is determined by the following precedence rules:
1621
1622* If ``dict['__metaclass__']`` exists, it is used.
1623
1624* Otherwise, if there is at least one base class, its metaclass is used (this
1625 looks for a *__class__* attribute first and if not found, uses its type).
1626
1627* Otherwise, if a global variable named __metaclass__ exists, it is used.
1628
Georg Brandl85eb8c12007-08-31 16:33:38 +00001629* Otherwise, the default metaclass (:class:`type`) is used.
Georg Brandl116aa622007-08-15 14:28:22 +00001630
1631The potential uses for metaclasses are boundless. Some ideas that have been
1632explored including logging, interface checking, automatic delegation, automatic
1633property creation, proxies, frameworks, and automatic resource
1634locking/synchronization.
1635
1636
1637.. _callable-types:
1638
1639Emulating callable objects
1640--------------------------
1641
1642
1643.. method:: object.__call__(self[, args...])
1644
1645 .. index:: pair: call; instance
1646
1647 Called when the instance is "called" as a function; if this method is defined,
1648 ``x(arg1, arg2, ...)`` is a shorthand for ``x.__call__(arg1, arg2, ...)``.
1649
1650
1651.. _sequence-types:
1652
1653Emulating container types
1654-------------------------
1655
1656The following methods can be defined to implement container objects. Containers
1657usually are sequences (such as lists or tuples) or mappings (like dictionaries),
1658but can represent other containers as well. The first set of methods is used
1659either to emulate a sequence or to emulate a mapping; the difference is that for
1660a sequence, the allowable keys should be the integers *k* for which ``0 <= k <
1661N`` where *N* is the length of the sequence, or slice objects, which define a
1662range of items. (For backwards compatibility, the method :meth:`__getslice__`
1663(see below) can also be defined to handle simple, but not extended slices.) It
1664is also recommended that mappings provide the methods :meth:`keys`,
1665:meth:`values`, :meth:`items`, :meth:`has_key`, :meth:`get`, :meth:`clear`,
1666:meth:`setdefault`, :meth:`iterkeys`, :meth:`itervalues`, :meth:`iteritems`,
1667:meth:`pop`, :meth:`popitem`, :meth:`copy`, and :meth:`update` behaving similar
1668to those for Python's standard dictionary objects. The :mod:`UserDict` module
1669provides a :class:`DictMixin` class to help create those methods from a base set
1670of :meth:`__getitem__`, :meth:`__setitem__`, :meth:`__delitem__`, and
1671:meth:`keys`. Mutable sequences should provide methods :meth:`append`,
1672:meth:`count`, :meth:`index`, :meth:`extend`, :meth:`insert`, :meth:`pop`,
1673:meth:`remove`, :meth:`reverse` and :meth:`sort`, like Python standard list
1674objects. Finally, sequence types should implement addition (meaning
1675concatenation) and multiplication (meaning repetition) by defining the methods
1676:meth:`__add__`, :meth:`__radd__`, :meth:`__iadd__`, :meth:`__mul__`,
1677:meth:`__rmul__` and :meth:`__imul__` described below; they should not define
1678other numerical operators. It is recommended that both mappings and sequences
1679implement the :meth:`__contains__` method to allow efficient use of the ``in``
1680operator; for mappings, ``in`` should be equivalent of :meth:`has_key`; for
1681sequences, it should search through the values. It is further recommended that
1682both mappings and sequences implement the :meth:`__iter__` method to allow
1683efficient iteration through the container; for mappings, :meth:`__iter__` should
1684be the same as :meth:`iterkeys`; for sequences, it should iterate through the
1685values.
1686
1687
1688.. method:: object.__len__(self)
1689
1690 .. index::
1691 builtin: len
1692 single: __bool__() (object method)
1693
1694 Called to implement the built-in function :func:`len`. Should return the length
1695 of the object, an integer ``>=`` 0. Also, an object that doesn't define a
1696 :meth:`__bool__` method and whose :meth:`__len__` method returns zero is
1697 considered to be false in a Boolean context.
1698
1699
1700.. method:: object.__getitem__(self, key)
1701
1702 .. index:: object: slice
1703
1704 Called to implement evaluation of ``self[key]``. For sequence types, the
1705 accepted keys should be integers and slice objects. Note that the special
1706 interpretation of negative indexes (if the class wishes to emulate a sequence
1707 type) is up to the :meth:`__getitem__` method. If *key* is of an inappropriate
1708 type, :exc:`TypeError` may be raised; if of a value outside the set of indexes
1709 for the sequence (after any special interpretation of negative values),
1710 :exc:`IndexError` should be raised. For mapping types, if *key* is missing (not
1711 in the container), :exc:`KeyError` should be raised.
1712
1713 .. note::
1714
1715 :keyword:`for` loops expect that an :exc:`IndexError` will be raised for illegal
1716 indexes to allow proper detection of the end of the sequence.
1717
1718
1719.. method:: object.__setitem__(self, key, value)
1720
1721 Called to implement assignment to ``self[key]``. Same note as for
1722 :meth:`__getitem__`. This should only be implemented for mappings if the
1723 objects support changes to the values for keys, or if new keys can be added, or
1724 for sequences if elements can be replaced. The same exceptions should be raised
1725 for improper *key* values as for the :meth:`__getitem__` method.
1726
1727
1728.. method:: object.__delitem__(self, key)
1729
1730 Called to implement deletion of ``self[key]``. Same note as for
1731 :meth:`__getitem__`. This should only be implemented for mappings if the
1732 objects support removal of keys, or for sequences if elements can be removed
1733 from the sequence. The same exceptions should be raised for improper *key*
1734 values as for the :meth:`__getitem__` method.
1735
1736
1737.. method:: object.__iter__(self)
1738
1739 This method is called when an iterator is required for a container. This method
1740 should return a new iterator object that can iterate over all the objects in the
1741 container. For mappings, it should iterate over the keys of the container, and
1742 should also be made available as the method :meth:`iterkeys`.
1743
1744 Iterator objects also need to implement this method; they are required to return
1745 themselves. For more information on iterator objects, see :ref:`typeiter`.
1746
1747The membership test operators (:keyword:`in` and :keyword:`not in`) are normally
1748implemented as an iteration through a sequence. However, container objects can
1749supply the following special method with a more efficient implementation, which
1750also does not require the object be a sequence.
1751
1752
1753.. method:: object.__contains__(self, item)
1754
1755 Called to implement membership test operators. Should return true if *item* is
1756 in *self*, false otherwise. For mapping objects, this should consider the keys
1757 of the mapping rather than the values or the key-item pairs.
1758
1759
1760.. _sequence-methods:
1761
1762Additional methods for emulation of sequence types
1763--------------------------------------------------
1764
1765The following optional methods can be defined to further emulate sequence
1766objects. Immutable sequences methods should at most only define
1767:meth:`__getslice__`; mutable sequences might define all three methods.
1768
1769
1770.. method:: object.__getslice__(self, i, j)
1771
1772 .. deprecated:: 2.0
1773 Support slice objects as parameters to the :meth:`__getitem__` method.
Guido van Rossum04110fb2007-08-24 16:32:05 +00001774 (However, built-in types in CPython currently still implement
1775 :meth:`__getslice__`. Therefore, you have to override it in derived
1776 classes when implementing slicing.)
Georg Brandl116aa622007-08-15 14:28:22 +00001777
1778 Called to implement evaluation of ``self[i:j]``. The returned object should be
1779 of the same type as *self*. Note that missing *i* or *j* in the slice
1780 expression are replaced by zero or ``sys.maxint``, respectively. If negative
1781 indexes are used in the slice, the length of the sequence is added to that
1782 index. If the instance does not implement the :meth:`__len__` method, an
1783 :exc:`AttributeError` is raised. No guarantee is made that indexes adjusted this
1784 way are not still negative. Indexes which are greater than the length of the
1785 sequence are not modified. If no :meth:`__getslice__` is found, a slice object
1786 is created instead, and passed to :meth:`__getitem__` instead.
1787
1788
1789.. method:: object.__setslice__(self, i, j, sequence)
1790
1791 Called to implement assignment to ``self[i:j]``. Same notes for *i* and *j* as
1792 for :meth:`__getslice__`.
1793
1794 This method is deprecated. If no :meth:`__setslice__` is found, or for extended
1795 slicing of the form ``self[i:j:k]``, a slice object is created, and passed to
1796 :meth:`__setitem__`, instead of :meth:`__setslice__` being called.
1797
1798
1799.. method:: object.__delslice__(self, i, j)
1800
1801 Called to implement deletion of ``self[i:j]``. Same notes for *i* and *j* as for
1802 :meth:`__getslice__`. This method is deprecated. If no :meth:`__delslice__` is
1803 found, or for extended slicing of the form ``self[i:j:k]``, a slice object is
1804 created, and passed to :meth:`__delitem__`, instead of :meth:`__delslice__`
1805 being called.
1806
1807Notice that these methods are only invoked when a single slice with a single
1808colon is used, and the slice method is available. For slice operations
1809involving extended slice notation, or in absence of the slice methods,
1810:meth:`__getitem__`, :meth:`__setitem__` or :meth:`__delitem__` is called with a
1811slice object as argument.
1812
1813The following example demonstrate how to make your program or module compatible
1814with earlier versions of Python (assuming that methods :meth:`__getitem__`,
1815:meth:`__setitem__` and :meth:`__delitem__` support slice objects as
1816arguments)::
1817
1818 class MyClass:
1819 ...
1820 def __getitem__(self, index):
1821 ...
1822 def __setitem__(self, index, value):
1823 ...
1824 def __delitem__(self, index):
1825 ...
1826
1827 if sys.version_info < (2, 0):
1828 # They won't be defined if version is at least 2.0 final
1829
1830 def __getslice__(self, i, j):
1831 return self[max(0, i):max(0, j):]
1832 def __setslice__(self, i, j, seq):
1833 self[max(0, i):max(0, j):] = seq
1834 def __delslice__(self, i, j):
1835 del self[max(0, i):max(0, j):]
1836 ...
1837
1838Note the calls to :func:`max`; these are necessary because of the handling of
1839negative indices before the :meth:`__\*slice__` methods are called. When
1840negative indexes are used, the :meth:`__\*item__` methods receive them as
1841provided, but the :meth:`__\*slice__` methods get a "cooked" form of the index
1842values. For each negative index value, the length of the sequence is added to
1843the index before calling the method (which may still result in a negative
1844index); this is the customary handling of negative indexes by the built-in
1845sequence types, and the :meth:`__\*item__` methods are expected to do this as
1846well. However, since they should already be doing that, negative indexes cannot
1847be passed in; they must be constrained to the bounds of the sequence before
1848being passed to the :meth:`__\*item__` methods. Calling ``max(0, i)``
1849conveniently returns the proper value.
1850
1851
1852.. _numeric-types:
1853
1854Emulating numeric types
1855-----------------------
1856
1857The following methods can be defined to emulate numeric objects. Methods
1858corresponding to operations that are not supported by the particular kind of
1859number implemented (e.g., bitwise operations for non-integral numbers) should be
1860left undefined.
1861
1862
1863.. method:: object.__add__(self, other)
1864 object.__sub__(self, other)
1865 object.__mul__(self, other)
1866 object.__floordiv__(self, other)
1867 object.__mod__(self, other)
1868 object.__divmod__(self, other)
1869 object.__pow__(self, other[, modulo])
1870 object.__lshift__(self, other)
1871 object.__rshift__(self, other)
1872 object.__and__(self, other)
1873 object.__xor__(self, other)
1874 object.__or__(self, other)
1875
1876 .. index::
1877 builtin: divmod
1878 builtin: pow
1879 builtin: pow
1880
1881 These methods are called to implement the binary arithmetic operations (``+``,
1882 ``-``, ``*``, ``//``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``,
1883 ``>>``, ``&``, ``^``, ``|``). For instance, to evaluate the expression
1884 *x*``+``*y*, where *x* is an instance of a class that has an :meth:`__add__`
1885 method, ``x.__add__(y)`` is called. The :meth:`__divmod__` method should be the
1886 equivalent to using :meth:`__floordiv__` and :meth:`__mod__`; it should not be
1887 related to :meth:`__truediv__` (described below). Note that :meth:`__pow__`
1888 should be defined to accept an optional third argument if the ternary version of
1889 the built-in :func:`pow` function is to be supported.
1890
1891 If one of those methods does not support the operation with the supplied
1892 arguments, it should return ``NotImplemented``.
1893
1894
1895.. method:: object.__div__(self, other)
1896 object.__truediv__(self, other)
1897
1898 The division operator (``/``) is implemented by these methods. The
1899 :meth:`__truediv__` method is used when ``__future__.division`` is in effect,
1900 otherwise :meth:`__div__` is used. If only one of these two methods is defined,
1901 the object will not support division in the alternate context; :exc:`TypeError`
1902 will be raised instead.
1903
1904
1905.. method:: object.__radd__(self, other)
1906 object.__rsub__(self, other)
1907 object.__rmul__(self, other)
1908 object.__rdiv__(self, other)
1909 object.__rtruediv__(self, other)
1910 object.__rfloordiv__(self, other)
1911 object.__rmod__(self, other)
1912 object.__rdivmod__(self, other)
1913 object.__rpow__(self, other)
1914 object.__rlshift__(self, other)
1915 object.__rrshift__(self, other)
1916 object.__rand__(self, other)
1917 object.__rxor__(self, other)
1918 object.__ror__(self, other)
1919
1920 .. index::
1921 builtin: divmod
1922 builtin: pow
1923
1924 These methods are called to implement the binary arithmetic operations (``+``,
1925 ``-``, ``*``, ``/``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``, ``>>``,
1926 ``&``, ``^``, ``|``) with reflected (swapped) operands. These functions are
1927 only called if the left operand does not support the corresponding operation and
1928 the operands are of different types. [#]_ For instance, to evaluate the
1929 expression *x*``-``*y*, where *y* is an instance of a class that has an
1930 :meth:`__rsub__` method, ``y.__rsub__(x)`` is called if ``x.__sub__(y)`` returns
1931 *NotImplemented*.
1932
1933 .. index:: builtin: pow
1934
1935 Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the
1936 coercion rules would become too complicated).
1937
1938 .. note::
1939
1940 If the right operand's type is a subclass of the left operand's type and that
1941 subclass provides the reflected method for the operation, this method will be
1942 called before the left operand's non-reflected method. This behavior allows
1943 subclasses to override their ancestors' operations.
1944
1945
1946.. method:: object.__iadd__(self, other)
1947 object.__isub__(self, other)
1948 object.__imul__(self, other)
1949 object.__idiv__(self, other)
1950 object.__itruediv__(self, other)
1951 object.__ifloordiv__(self, other)
1952 object.__imod__(self, other)
1953 object.__ipow__(self, other[, modulo])
1954 object.__ilshift__(self, other)
1955 object.__irshift__(self, other)
1956 object.__iand__(self, other)
1957 object.__ixor__(self, other)
1958 object.__ior__(self, other)
1959
1960 These methods are called to implement the augmented arithmetic operations
1961 (``+=``, ``-=``, ``*=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, ``>>=``,
1962 ``&=``, ``^=``, ``|=``). These methods should attempt to do the operation
1963 in-place (modifying *self*) and return the result (which could be, but does
1964 not have to be, *self*). If a specific method is not defined, the augmented
1965 operation falls back to the normal methods. For instance, to evaluate the
1966 expression *x*``+=``*y*, where *x* is an instance of a class that has an
1967 :meth:`__iadd__` method, ``x.__iadd__(y)`` is called. If *x* is an instance
1968 of a class that does not define a :meth:`__iadd__` method, ``x.__add__(y)``
1969 and ``y.__radd__(x)`` are considered, as with the evaluation of *x*``+``*y*.
1970
1971
1972.. method:: object.__neg__(self)
1973 object.__pos__(self)
1974 object.__abs__(self)
1975 object.__invert__(self)
1976
1977 .. index:: builtin: abs
1978
1979 Called to implement the unary arithmetic operations (``-``, ``+``, :func:`abs`
1980 and ``~``).
1981
1982
1983.. method:: object.__complex__(self)
1984 object.__int__(self)
1985 object.__long__(self)
1986 object.__float__(self)
1987
1988 .. index::
1989 builtin: complex
1990 builtin: int
1991 builtin: long
1992 builtin: float
1993
1994 Called to implement the built-in functions :func:`complex`, :func:`int`,
1995 :func:`long`, and :func:`float`. Should return a value of the appropriate type.
1996
1997
1998.. method:: object.__index__(self)
1999
2000 Called to implement :func:`operator.index`. Also called whenever Python needs
2001 an integer object (such as in slicing, or in the built-in :func:`bin`,
2002 :func:`hex` and :func:`oct` functions). Must return an integer (int or long).
2003
2004 .. versionadded:: 2.5
2005
2006
2007.. _context-managers:
2008
2009With Statement Context Managers
2010-------------------------------
2011
2012.. versionadded:: 2.5
2013
2014A :dfn:`context manager` is an object that defines the runtime context to be
2015established when executing a :keyword:`with` statement. The context manager
2016handles the entry into, and the exit from, the desired runtime context for the
2017execution of the block of code. Context managers are normally invoked using the
2018:keyword:`with` statement (described in section :ref:`with`), but can also be
2019used by directly invoking their methods.
2020
2021.. index::
2022 statement: with
2023 single: context manager
2024
2025Typical uses of context managers include saving and restoring various kinds of
2026global state, locking and unlocking resources, closing opened files, etc.
2027
2028For more information on context managers, see :ref:`typecontextmanager`.
2029
2030
2031.. method:: object.__enter__(self)
2032
2033 Enter the runtime context related to this object. The :keyword:`with` statement
2034 will bind this method's return value to the target(s) specified in the
2035 :keyword:`as` clause of the statement, if any.
2036
2037
2038.. method:: object.__exit__(self, exc_type, exc_value, traceback)
2039
2040 Exit the runtime context related to this object. The parameters describe the
2041 exception that caused the context to be exited. If the context was exited
2042 without an exception, all three arguments will be :const:`None`.
2043
2044 If an exception is supplied, and the method wishes to suppress the exception
2045 (i.e., prevent it from being propagated), it should return a true value.
2046 Otherwise, the exception will be processed normally upon exit from this method.
2047
2048 Note that :meth:`__exit__` methods should not reraise the passed-in exception;
2049 this is the caller's responsibility.
2050
2051
2052.. seealso::
2053
2054 :pep:`0343` - The "with" statement
2055 The specification, background, and examples for the Python :keyword:`with`
2056 statement.
2057
2058.. rubric:: Footnotes
2059
Guido van Rossum04110fb2007-08-24 16:32:05 +00002060.. [#] A descriptor can define any combination of :meth:`__get__`,
2061 :meth:`__set__` and :meth:`__delete__`. If it does not define :meth:`__get__`,
2062 then accessing the attribute even on an instance will return the descriptor
2063 object itself. If the descriptor defines :meth:`__set__` and/or
2064 :meth:`__delete__`, it is a data descriptor; if it defines neither, it is a
2065 non-data descriptor.
2066
Georg Brandl116aa622007-08-15 14:28:22 +00002067.. [#] For operands of the same type, it is assumed that if the non-reflected method
2068 (such as :meth:`__add__`) fails the operation is not supported, which is why the
2069 reflected method is not called.
2070