blob: 7d5b7beff842995ea9ef6a68afcf251bc75deaa8 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +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
32Every object has an identity, a type and a value. An object's *identity* never
33changes once it has been created; you may think of it as the object's address in
34memory. The ':keyword:`is`' operator compares the identity of two objects; the
35:func:`id` function returns an integer representing its identity (currently
36implemented as its address). An object's :dfn:`type` is also unchangeable. [#]_
37An object's type determines the operations that the object supports (e.g., "does
38it have a length?") and also defines the possible values for objects of that
39type. The :func:`type` function returns an object's type (which is an object
40itself). The *value* of some objects can change. Objects whose value can
41change are said to be *mutable*; objects whose value is unchangeable once they
42are created are called *immutable*. (The value of an immutable container object
43that contains a reference to a mutable object can change when the latter's value
44is changed; however the container is still considered immutable, because the
45collection of objects it contains cannot be changed. So, immutability is not
46strictly the same as having an unchangeable value, it is more subtle.) An
47object's mutability is determined by its type; for instance, numbers, strings
48and tuples are immutable, while dictionaries and lists are mutable.
49
50.. index::
51 single: garbage collection
52 single: reference counting
53 single: unreachable object
54
55Objects are never explicitly destroyed; however, when they become unreachable
56they may be garbage-collected. An implementation is allowed to postpone garbage
57collection or omit it altogether --- it is a matter of implementation quality
58how garbage collection is implemented, as long as no objects are collected that
Georg Brandl8943caf2009-04-05 21:11:43 +000059are still reachable. (Implementation note: CPython currently uses a
Georg Brandl8ec7f652007-08-15 14:28:01 +000060reference-counting scheme with (optional) delayed detection of cyclically linked
61garbage, which collects most objects as soon as they become unreachable, but is
62not guaranteed to collect garbage containing circular references. See the
63documentation of the :mod:`gc` module for information on controlling the
Georg Brandl8943caf2009-04-05 21:11:43 +000064collection of cyclic garbage. Other implementations act differently and CPython
65may change.)
Georg Brandl8ec7f652007-08-15 14:28:01 +000066
67Note that the use of the implementation's tracing or debugging facilities may
68keep objects alive that would normally be collectable. Also note that catching
69an exception with a ':keyword:`try`...\ :keyword:`except`' statement may keep
70objects alive.
71
72Some objects contain references to "external" resources such as open files or
73windows. It is understood that these resources are freed when the object is
74garbage-collected, but since garbage collection is not guaranteed to happen,
75such objects also provide an explicit way to release the external resource,
76usually a :meth:`close` method. Programs are strongly recommended to explicitly
77close such objects. The ':keyword:`try`...\ :keyword:`finally`' statement
78provides a convenient way to do this.
79
80.. index:: single: container
81
82Some objects contain references to other objects; these are called *containers*.
83Examples of containers are tuples, lists and dictionaries. The references are
84part of a container's value. In most cases, when we talk about the value of a
85container, we imply the values, not the identities of the contained objects;
86however, when we talk about the mutability of a container, only the identities
87of the immediately contained objects are implied. So, if an immutable container
88(like a tuple) contains a reference to a mutable object, its value changes if
89that mutable object is changed.
90
91Types affect almost all aspects of object behavior. Even the importance of
92object identity is affected in some sense: for immutable types, operations that
93compute new values may actually return a reference to any existing object with
94the same type and value, while for mutable objects this is not allowed. E.g.,
95after ``a = 1; b = 1``, ``a`` and ``b`` may or may not refer to the same object
96with the value one, depending on the implementation, but after ``c = []; d =
97[]``, ``c`` and ``d`` are guaranteed to refer to two different, unique, newly
98created empty lists. (Note that ``c = d = []`` assigns the same object to both
99``c`` and ``d``.)
100
101
102.. _types:
103
104The standard type hierarchy
105===========================
106
107.. index::
108 single: type
109 pair: data; type
110 pair: type; hierarchy
111 pair: extension; module
112 pair: C; language
113
114Below is a list of the types that are built into Python. Extension modules
115(written in C, Java, or other languages, depending on the implementation) can
116define additional types. Future versions of Python may add types to the type
117hierarchy (e.g., rational numbers, efficiently stored arrays of integers, etc.).
118
119.. index::
120 single: attribute
121 pair: special; attribute
122 triple: generic; special; attribute
123
124Some of the type descriptions below contain a paragraph listing 'special
125attributes.' These are attributes that provide access to the implementation and
126are not intended for general use. Their definition may change in the future.
127
128None
129 .. index:: object: None
130
131 This type has a single value. There is a single object with this value. This
132 object is accessed through the built-in name ``None``. It is used to signify the
133 absence of a value in many situations, e.g., it is returned from functions that
134 don't explicitly return anything. Its truth value is false.
135
136NotImplemented
137 .. index:: object: NotImplemented
138
139 This type has a single value. There is a single object with this value. This
140 object is accessed through the built-in name ``NotImplemented``. Numeric methods
141 and rich comparison methods may return this value if they do not implement the
142 operation for the operands provided. (The interpreter will then try the
143 reflected operation, or some other fallback, depending on the operator.) Its
144 truth value is true.
145
146Ellipsis
147 .. index:: object: Ellipsis
148
149 This type has a single value. There is a single object with this value. This
150 object is accessed through the built-in name ``Ellipsis``. It is used to
151 indicate the presence of the ``...`` syntax in a slice. Its truth value is
152 true.
153
Jeffrey Yasskin2f3c16b2008-01-03 02:21:52 +0000154:class:`numbers.Number`
Georg Brandl8ec7f652007-08-15 14:28:01 +0000155 .. index:: object: numeric
156
157 These are created by numeric literals and returned as results by arithmetic
158 operators and arithmetic built-in functions. Numeric objects are immutable;
159 once created their value never changes. Python numbers are of course strongly
160 related to mathematical numbers, but subject to the limitations of numerical
161 representation in computers.
162
163 Python distinguishes between integers, floating point numbers, and complex
164 numbers:
165
Jeffrey Yasskin2f3c16b2008-01-03 02:21:52 +0000166 :class:`numbers.Integral`
Georg Brandl8ec7f652007-08-15 14:28:01 +0000167 .. index:: object: integer
168
169 These represent elements from the mathematical set of integers (positive and
170 negative).
171
172 There are three types of integers:
173
174 Plain integers
175 .. index::
176 object: plain integer
177 single: OverflowError (built-in exception)
178
Georg Brandle9135ba2008-05-11 10:55:59 +0000179 These represent numbers in the range -2147483648 through 2147483647.
180 (The range may be larger on machines with a larger natural word size,
181 but not smaller.) When the result of an operation would fall outside
182 this range, the result is normally returned as a long integer (in some
183 cases, the exception :exc:`OverflowError` is raised instead). For the
184 purpose of shift and mask operations, integers are assumed to have a
185 binary, 2's complement notation using 32 or more bits, and hiding no
186 bits from the user (i.e., all 4294967296 different bit patterns
187 correspond to different values).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000188
189 Long integers
190 .. index:: object: long integer
191
Georg Brandle9135ba2008-05-11 10:55:59 +0000192 These represent numbers in an unlimited range, subject to available
193 (virtual) memory only. For the purpose of shift and mask operations, a
194 binary representation is assumed, and negative numbers are represented
195 in a variant of 2's complement which gives the illusion of an infinite
196 string of sign bits extending to the left.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000197
198 Booleans
199 .. index::
200 object: Boolean
201 single: False
202 single: True
203
Georg Brandle9135ba2008-05-11 10:55:59 +0000204 These represent the truth values False and True. The two objects
205 representing the values False and True are the only Boolean objects.
206 The Boolean type is a subtype of plain integers, and Boolean values
207 behave like the values 0 and 1, respectively, in almost all contexts,
208 the exception being that when converted to a string, the strings
209 ``"False"`` or ``"True"`` are returned, respectively.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000210
211 .. index:: pair: integer; representation
212
Georg Brandle9135ba2008-05-11 10:55:59 +0000213 The rules for integer representation are intended to give the most
214 meaningful interpretation of shift and mask operations involving negative
215 integers and the least surprises when switching between the plain and long
216 integer domains. Any operation, if it yields a result in the plain
217 integer domain, will yield the same result in the long integer domain or
218 when using mixed operands. The switch between domains is transparent to
219 the programmer.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000220
Jeffrey Yasskin2f3c16b2008-01-03 02:21:52 +0000221 :class:`numbers.Real` (:class:`float`)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000222 .. 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
Jeffrey Yasskin2f3c16b2008-01-03 02:21:52 +0000236 :class:`numbers.Complex`
Georg Brandl8ec7f652007-08-15 14:28:01 +0000237 .. 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
Georg Brandl8ec7f652007-08-15 14:28:01 +0000246Sequences
247 .. index::
248 builtin: len
249 object: sequence
250 single: index operation
251 single: item selection
252 single: subscription
253
254 These represent finite ordered sets indexed by non-negative numbers. The
255 built-in function :func:`len` returns the number of items of a sequence. When
256 the length of a sequence is *n*, the index set contains the numbers 0, 1,
257 ..., *n*-1. Item *i* of sequence *a* is selected by ``a[i]``.
258
259 .. index:: single: slicing
260
261 Sequences also support slicing: ``a[i:j]`` selects all items with index *k* such
262 that *i* ``<=`` *k* ``<`` *j*. When used as an expression, a slice is a
263 sequence of the same type. This implies that the index set is renumbered so
264 that it starts at 0.
265
266 .. index:: single: extended slicing
267
268 Some sequences also support "extended slicing" with a third "step" parameter:
269 ``a[i:j:k]`` selects all items of *a* with index *x* where ``x = i + n*k``, *n*
270 ``>=`` ``0`` and *i* ``<=`` *x* ``<`` *j*.
271
272 Sequences are distinguished according to their mutability:
273
274 Immutable sequences
275 .. index::
276 object: immutable sequence
277 object: immutable
278
279 An object of an immutable sequence type cannot change once it is created. (If
280 the object contains references to other objects, these other objects may be
281 mutable and may be changed; however, the collection of objects directly
282 referenced by an immutable object cannot change.)
283
284 The following types are immutable sequences:
285
286 Strings
287 .. index::
288 builtin: chr
289 builtin: ord
290 object: string
291 single: character
292 single: byte
293 single: ASCII@ASCII
294
295 The items of a string are characters. There is no separate character type; a
296 character is represented by a string of one item. Characters represent (at
297 least) 8-bit bytes. The built-in functions :func:`chr` and :func:`ord` convert
298 between characters and nonnegative integers representing the byte values. Bytes
299 with the values 0-127 usually represent the corresponding ASCII values, but the
300 interpretation of values is up to the program. The string data type is also
301 used to represent arrays of bytes, e.g., to hold data read from a file.
302
303 .. index::
304 single: ASCII@ASCII
305 single: EBCDIC
306 single: character set
307 pair: string; comparison
308 builtin: chr
309 builtin: ord
310
311 (On systems whose native character set is not ASCII, strings may use EBCDIC in
312 their internal representation, provided the functions :func:`chr` and
313 :func:`ord` implement a mapping between ASCII and EBCDIC, and string comparison
314 preserves the ASCII order. Or perhaps someone can propose a better rule?)
315
316 Unicode
317 .. index::
318 builtin: unichr
319 builtin: ord
320 builtin: unicode
321 object: unicode
322 single: character
323 single: integer
324 single: Unicode
325
326 The items of a Unicode object are Unicode code units. A Unicode code unit is
327 represented by a Unicode object of one item and can hold either a 16-bit or
328 32-bit value representing a Unicode ordinal (the maximum value for the ordinal
329 is given in ``sys.maxunicode``, and depends on how Python is configured at
330 compile time). Surrogate pairs may be present in the Unicode object, and will
331 be reported as two separate items. The built-in functions :func:`unichr` and
332 :func:`ord` convert between code units and nonnegative integers representing the
333 Unicode ordinals as defined in the Unicode Standard 3.0. Conversion from and to
334 other encodings are possible through the Unicode method :meth:`encode` and the
335 built-in function :func:`unicode`.
336
337 Tuples
338 .. index::
339 object: tuple
340 pair: singleton; tuple
341 pair: empty; tuple
342
343 The items of a tuple are arbitrary Python objects. Tuples of two or more items
344 are formed by comma-separated lists of expressions. A tuple of one item (a
345 'singleton') can be formed by affixing a comma to an expression (an expression
346 by itself does not create a tuple, since parentheses must be usable for grouping
347 of expressions). An empty tuple can be formed by an empty pair of parentheses.
348
Georg Brandl8ec7f652007-08-15 14:28:01 +0000349 Mutable sequences
350 .. index::
351 object: mutable sequence
352 object: mutable
353 pair: assignment; statement
354 single: delete
355 statement: del
356 single: subscription
357 single: slicing
358
359 Mutable sequences can be changed after they are created. The subscription and
360 slicing notations can be used as the target of assignment and :keyword:`del`
361 (delete) statements.
362
363 There is currently a single intrinsic mutable sequence type:
364
365 Lists
366 .. index:: object: list
367
368 The items of a list are arbitrary Python objects. Lists are formed by placing a
369 comma-separated list of expressions in square brackets. (Note that there are no
370 special cases needed to form lists of length 0 or 1.)
371
372 .. index:: module: array
373
374 The extension module :mod:`array` provides an additional example of a mutable
375 sequence type.
376
Georg Brandl8ec7f652007-08-15 14:28:01 +0000377Set types
378 .. index::
379 builtin: len
380 object: set type
381
382 These represent unordered, finite sets of unique, immutable objects. As such,
383 they cannot be indexed by any subscript. However, they can be iterated over, and
384 the built-in function :func:`len` returns the number of items in a set. Common
385 uses for sets are fast membership testing, removing duplicates from a sequence,
386 and computing mathematical operations such as intersection, union, difference,
387 and symmetric difference.
388
389 For set elements, the same immutability rules apply as for dictionary keys. Note
390 that numeric types obey the normal rules for numeric comparison: if two numbers
391 compare equal (e.g., ``1`` and ``1.0``), only one of them can be contained in a
392 set.
393
394 There are currently two intrinsic set types:
395
396 Sets
397 .. index:: object: set
398
399 These represent a mutable set. They are created by the built-in :func:`set`
400 constructor and can be modified afterwards by several methods, such as
401 :meth:`add`.
402
403 Frozen sets
404 .. index:: object: frozenset
405
Georg Brandl7c3e79f2007-11-02 20:06:17 +0000406 These represent an immutable set. They are created by the built-in
407 :func:`frozenset` constructor. As a frozenset is immutable and
408 :term:`hashable`, it can be used again as an element of another set, or as
409 a dictionary key.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000410
Georg Brandl8ec7f652007-08-15 14:28:01 +0000411Mappings
412 .. index::
413 builtin: len
414 single: subscription
415 object: mapping
416
417 These represent finite sets of objects indexed by arbitrary index sets. The
418 subscript notation ``a[k]`` selects the item indexed by ``k`` from the mapping
419 ``a``; this can be used in expressions and as the target of assignments or
420 :keyword:`del` statements. The built-in function :func:`len` returns the number
421 of items in a mapping.
422
423 There is currently a single intrinsic mapping type:
424
425 Dictionaries
426 .. index:: object: dictionary
427
428 These represent finite sets of objects indexed by nearly arbitrary values. The
429 only types of values not acceptable as keys are values containing lists or
430 dictionaries or other mutable types that are compared by value rather than by
431 object identity, the reason being that the efficient implementation of
432 dictionaries requires a key's hash value to remain constant. Numeric types used
433 for keys obey the normal rules for numeric comparison: if two numbers compare
434 equal (e.g., ``1`` and ``1.0``) then they can be used interchangeably to index
435 the same dictionary entry.
436
437 Dictionaries are mutable; they can be created by the ``{...}`` notation (see
438 section :ref:`dict`).
439
440 .. index::
441 module: dbm
442 module: gdbm
443 module: bsddb
444
445 The extension modules :mod:`dbm`, :mod:`gdbm`, and :mod:`bsddb` provide
446 additional examples of mapping types.
447
Georg Brandl8ec7f652007-08-15 14:28:01 +0000448Callable types
449 .. index::
450 object: callable
451 pair: function; call
452 single: invocation
453 pair: function; argument
454
455 These are the types to which the function call operation (see section
456 :ref:`calls`) can be applied:
457
458 User-defined functions
459 .. index::
460 pair: user-defined; function
461 object: function
462 object: user-defined function
463
464 A user-defined function object is created by a function definition (see
465 section :ref:`function`). It should be called with an argument list
466 containing the same number of items as the function's formal parameter
467 list.
468
469 Special attributes:
470
471 +-----------------------+-------------------------------+-----------+
472 | Attribute | Meaning | |
473 +=======================+===============================+===========+
474 | :attr:`func_doc` | The function's documentation | Writable |
475 | | string, or ``None`` if | |
476 | | unavailable | |
477 +-----------------------+-------------------------------+-----------+
478 | :attr:`__doc__` | Another way of spelling | Writable |
479 | | :attr:`func_doc` | |
480 +-----------------------+-------------------------------+-----------+
481 | :attr:`func_name` | The function's name | Writable |
482 +-----------------------+-------------------------------+-----------+
483 | :attr:`__name__` | Another way of spelling | Writable |
484 | | :attr:`func_name` | |
485 +-----------------------+-------------------------------+-----------+
486 | :attr:`__module__` | The name of the module the | Writable |
487 | | function was defined in, or | |
488 | | ``None`` if unavailable. | |
489 +-----------------------+-------------------------------+-----------+
490 | :attr:`func_defaults` | A tuple containing default | Writable |
491 | | argument values for those | |
492 | | arguments that have defaults, | |
493 | | or ``None`` if no arguments | |
494 | | have a default value | |
495 +-----------------------+-------------------------------+-----------+
496 | :attr:`func_code` | The code object representing | Writable |
497 | | the compiled function body. | |
498 +-----------------------+-------------------------------+-----------+
499 | :attr:`func_globals` | A reference to the dictionary | Read-only |
500 | | that holds the function's | |
501 | | global variables --- the | |
502 | | global namespace of the | |
503 | | module in which the function | |
504 | | was defined. | |
505 +-----------------------+-------------------------------+-----------+
506 | :attr:`func_dict` | The namespace supporting | Writable |
507 | | arbitrary function | |
508 | | attributes. | |
509 +-----------------------+-------------------------------+-----------+
510 | :attr:`func_closure` | ``None`` or a tuple of cells | Read-only |
511 | | that contain bindings for the | |
512 | | function's free variables. | |
513 +-----------------------+-------------------------------+-----------+
514
515 Most of the attributes labelled "Writable" check the type of the assigned value.
516
517 .. versionchanged:: 2.4
518 ``func_name`` is now writable.
519
520 Function objects also support getting and setting arbitrary attributes, which
521 can be used, for example, to attach metadata to functions. Regular attribute
522 dot-notation is used to get and set such attributes. *Note that the current
523 implementation only supports function attributes on user-defined functions.
524 Function attributes on built-in functions may be supported in the future.*
525
526 Additional information about a function's definition can be retrieved from its
527 code object; see the description of internal types below.
528
529 .. index::
530 single: func_doc (function attribute)
531 single: __doc__ (function attribute)
532 single: __name__ (function attribute)
533 single: __module__ (function attribute)
534 single: __dict__ (function attribute)
535 single: func_defaults (function attribute)
536 single: func_closure (function attribute)
537 single: func_code (function attribute)
538 single: func_globals (function attribute)
539 single: func_dict (function attribute)
540 pair: global; namespace
541
542 User-defined methods
543 .. index::
544 object: method
545 object: user-defined method
546 pair: user-defined; method
547
548 A user-defined method object combines a class, a class instance (or ``None``)
549 and any callable object (normally a user-defined function).
550
551 Special read-only attributes: :attr:`im_self` is the class instance object,
552 :attr:`im_func` is the function object; :attr:`im_class` is the class of
553 :attr:`im_self` for bound methods or the class that asked for the method for
554 unbound methods; :attr:`__doc__` is the method's documentation (same as
555 ``im_func.__doc__``); :attr:`__name__` is the method name (same as
556 ``im_func.__name__``); :attr:`__module__` is the name of the module the method
557 was defined in, or ``None`` if unavailable.
558
559 .. versionchanged:: 2.2
560 :attr:`im_self` used to refer to the class that defined the method.
561
Georg Brandl3fbe20c2008-03-21 19:20:21 +0000562 .. versionchanged:: 2.6
563 For 3.0 forward-compatibility, :attr:`im_func` is also available as
564 :attr:`__func__`, and :attr:`im_self` as :attr:`__self__`.
565
Georg Brandl8ec7f652007-08-15 14:28:01 +0000566 .. index::
567 single: __doc__ (method attribute)
568 single: __name__ (method attribute)
569 single: __module__ (method attribute)
570 single: im_func (method attribute)
571 single: im_self (method attribute)
572
573 Methods also support accessing (but not setting) the arbitrary function
574 attributes on the underlying function object.
575
576 User-defined method objects may be created when getting an attribute of a class
577 (perhaps via an instance of that class), if that attribute is a user-defined
578 function object, an unbound user-defined method object, or a class method
579 object. When the attribute is a user-defined method object, a new method object
580 is only created if the class from which it is being retrieved is the same as, or
581 a derived class of, the class stored in the original method object; otherwise,
582 the original method object is used as it is.
583
584 .. index::
585 single: im_class (method attribute)
586 single: im_func (method attribute)
587 single: im_self (method attribute)
588
589 When a user-defined method object is created by retrieving a user-defined
590 function object from a class, its :attr:`im_self` attribute is ``None``
591 and the method object is said to be unbound. When one is created by
592 retrieving a user-defined function object from a class via one of its
593 instances, its :attr:`im_self` attribute is the instance, and the method
594 object is said to be bound. In either case, the new method's
595 :attr:`im_class` attribute is the class from which the retrieval takes
596 place, and its :attr:`im_func` attribute is the original function object.
597
598 .. index:: single: im_func (method attribute)
599
600 When a user-defined method object is created by retrieving another method object
601 from a class or instance, the behaviour is the same as for a function object,
602 except that the :attr:`im_func` attribute of the new instance is not the
603 original method object but its :attr:`im_func` attribute.
604
605 .. index::
606 single: im_class (method attribute)
607 single: im_func (method attribute)
608 single: im_self (method attribute)
609
610 When a user-defined method object is created by retrieving a class method object
611 from a class or instance, its :attr:`im_self` attribute is the class itself (the
612 same as the :attr:`im_class` attribute), and its :attr:`im_func` attribute is
613 the function object underlying the class method.
614
615 When an unbound user-defined method object is called, the underlying function
616 (:attr:`im_func`) is called, with the restriction that the first argument must
617 be an instance of the proper class (:attr:`im_class`) or of a derived class
618 thereof.
619
620 When a bound user-defined method object is called, the underlying function
621 (:attr:`im_func`) is called, inserting the class instance (:attr:`im_self`) in
622 front of the argument list. For instance, when :class:`C` is a class which
623 contains a definition for a function :meth:`f`, and ``x`` is an instance of
624 :class:`C`, calling ``x.f(1)`` is equivalent to calling ``C.f(x, 1)``.
625
626 When a user-defined method object is derived from a class method object, the
627 "class instance" stored in :attr:`im_self` will actually be the class itself, so
628 that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to calling ``f(C,1)``
629 where ``f`` is the underlying function.
630
631 Note that the transformation from function object to (unbound or bound) method
632 object happens each time the attribute is retrieved from the class or instance.
633 In some cases, a fruitful optimization is to assign the attribute to a local
634 variable and call that local variable. Also notice that this transformation only
635 happens for user-defined functions; other callable objects (and all non-callable
636 objects) are retrieved without transformation. It is also important to note
637 that user-defined functions which are attributes of a class instance are not
638 converted to bound methods; this *only* happens when the function is an
639 attribute of the class.
640
641 Generator functions
642 .. index::
643 single: generator; function
644 single: generator; iterator
645
646 A function or method which uses the :keyword:`yield` statement (see section
647 :ref:`yield`) is called a :dfn:`generator
648 function`. Such a function, when called, always returns an iterator object
649 which can be used to execute the body of the function: calling the iterator's
650 :meth:`next` method will cause the function to execute until it provides a value
651 using the :keyword:`yield` statement. When the function executes a
652 :keyword:`return` statement or falls off the end, a :exc:`StopIteration`
653 exception is raised and the iterator will have reached the end of the set of
654 values to be returned.
655
656 Built-in functions
657 .. index::
658 object: built-in function
659 object: function
660 pair: C; language
661
662 A built-in function object is a wrapper around a C function. Examples of
663 built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a
664 standard built-in module). The number and type of the arguments are
665 determined by the C function. Special read-only attributes:
666 :attr:`__doc__` is the function's documentation string, or ``None`` if
667 unavailable; :attr:`__name__` is the function's name; :attr:`__self__` is
668 set to ``None`` (but see the next item); :attr:`__module__` is the name of
669 the module the function was defined in or ``None`` if unavailable.
670
671 Built-in methods
672 .. index::
673 object: built-in method
674 object: method
675 pair: built-in; method
676
677 This is really a different disguise of a built-in function, this time containing
678 an object passed to the C function as an implicit extra argument. An example of
679 a built-in method is ``alist.append()``, assuming *alist* is a list object. In
680 this case, the special read-only attribute :attr:`__self__` is set to the object
681 denoted by *list*.
682
683 Class Types
684 Class types, or "new-style classes," are callable. These objects normally act
685 as factories for new instances of themselves, but variations are possible for
686 class types that override :meth:`__new__`. The arguments of the call are passed
687 to :meth:`__new__` and, in the typical case, to :meth:`__init__` to initialize
688 the new instance.
689
690 Classic Classes
691 .. index::
692 single: __init__() (object method)
693 object: class
694 object: class instance
695 object: instance
696 pair: class object; call
697
698 Class objects are described below. When a class object is called, a new class
699 instance (also described below) is created and returned. This implies a call to
700 the class's :meth:`__init__` method if it has one. Any arguments are passed on
701 to the :meth:`__init__` method. If there is no :meth:`__init__` method, the
702 class must be called without arguments.
703
704 Class instances
705 Class instances are described below. Class instances are callable only when the
706 class has a :meth:`__call__` method; ``x(arguments)`` is a shorthand for
707 ``x.__call__(arguments)``.
708
709Modules
710 .. index::
711 statement: import
712 object: module
713
714 Modules are imported by the :keyword:`import` statement (see section
715 :ref:`import`). A module object has a
716 namespace implemented by a dictionary object (this is the dictionary referenced
717 by the func_globals attribute of functions defined in the module). Attribute
718 references are translated to lookups in this dictionary, e.g., ``m.x`` is
719 equivalent to ``m.__dict__["x"]``. A module object does not contain the code
720 object used to initialize the module (since it isn't needed once the
721 initialization is done).
722
Georg Brandl8ec7f652007-08-15 14:28:01 +0000723 Attribute assignment updates the module's namespace dictionary, e.g., ``m.x =
724 1`` is equivalent to ``m.__dict__["x"] = 1``.
725
726 .. index:: single: __dict__ (module attribute)
727
728 Special read-only attribute: :attr:`__dict__` is the module's namespace as a
729 dictionary object.
730
731 .. index::
732 single: __name__ (module attribute)
733 single: __doc__ (module attribute)
734 single: __file__ (module attribute)
735 pair: module; namespace
736
737 Predefined (writable) attributes: :attr:`__name__` is the module's name;
738 :attr:`__doc__` is the module's documentation string, or ``None`` if
739 unavailable; :attr:`__file__` is the pathname of the file from which the module
740 was loaded, if it was loaded from a file. The :attr:`__file__` attribute is not
741 present for C modules that are statically linked into the interpreter; for
742 extension modules loaded dynamically from a shared library, it is the pathname
743 of the shared library file.
744
745Classes
Nick Coghlana5107482008-08-04 12:40:59 +0000746 Both class types (new-style classes) and class objects (old-style/classic
747 classes) are typically created by class definitions (see section
748 :ref:`class`). A class has a namespace implemented by a dictionary object.
749 Class attribute references are translated to lookups in this dictionary, e.g.,
750 ``C.x`` is translated to ``C.__dict__["x"]`` (although for new-style classes
751 in particular there are a number of hooks which allow for other means of
752 locating attributes). When the attribute name is not found there, the
753 attribute search continues in the base classes. For old-style classes, the
754 search is depth-first, left-to-right in the order of occurrence in the base
755 class list. New-style classes use the more complex C3 method resolution
756 order which behaves correctly even in the presence of 'diamond'
757 inheritance structures where there are multiple inheritance paths
758 leading back to a common ancestor. Additional details on the C3 MRO used by
759 new-style classes can be found in the documentation accompanying the
760 2.3 release at http://www.python.org/download/releases/2.3/mro/.
761
762 .. XXX: Could we add that MRO doc as an appendix to the language ref?
Georg Brandl8ec7f652007-08-15 14:28:01 +0000763
764 .. index::
765 object: class
766 object: class instance
767 object: instance
768 pair: class object; call
769 single: container
770 object: dictionary
771 pair: class; attribute
772
773 When a class attribute reference (for class :class:`C`, say) would yield a
774 user-defined function object or an unbound user-defined method object whose
775 associated class is either :class:`C` or one of its base classes, it is
776 transformed into an unbound user-defined method object whose :attr:`im_class`
777 attribute is :class:`C`. When it would yield a class method object, it is
778 transformed into a bound user-defined method object whose :attr:`im_class`
779 and :attr:`im_self` attributes are both :class:`C`. When it would yield a
780 static method object, it is transformed into the object wrapped by the static
781 method object. See section :ref:`descriptors` for another way in which
782 attributes retrieved from a class may differ from those actually contained in
Nick Coghlana5107482008-08-04 12:40:59 +0000783 its :attr:`__dict__` (note that only new-style classes support descriptors).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000784
785 .. index:: triple: class; attribute; assignment
786
787 Class attribute assignments update the class's dictionary, never the dictionary
788 of a base class.
789
790 .. index:: pair: class object; call
791
792 A class object can be called (see above) to yield a class instance (see below).
793
794 .. index::
795 single: __name__ (class attribute)
796 single: __module__ (class attribute)
797 single: __dict__ (class attribute)
798 single: __bases__ (class attribute)
799 single: __doc__ (class attribute)
800
801 Special attributes: :attr:`__name__` is the class name; :attr:`__module__` is
802 the module name in which the class was defined; :attr:`__dict__` is the
803 dictionary containing the class's namespace; :attr:`__bases__` is a tuple
804 (possibly empty or a singleton) containing the base classes, in the order of
805 their occurrence in the base class list; :attr:`__doc__` is the class's
806 documentation string, or None if undefined.
807
808Class instances
809 .. index::
810 object: class instance
811 object: instance
812 pair: class; instance
813 pair: class instance; attribute
814
815 A class instance is created by calling a class object (see above). A class
816 instance has a namespace implemented as a dictionary which is the first place in
817 which attribute references are searched. When an attribute is not found there,
818 and the instance's class has an attribute by that name, the search continues
819 with the class attributes. If a class attribute is found that is a user-defined
820 function object or an unbound user-defined method object whose associated class
821 is the class (call it :class:`C`) of the instance for which the attribute
822 reference was initiated or one of its bases, it is transformed into a bound
823 user-defined method object whose :attr:`im_class` attribute is :class:`C` and
824 whose :attr:`im_self` attribute is the instance. Static method and class method
825 objects are also transformed, as if they had been retrieved from class
826 :class:`C`; see above under "Classes". See section :ref:`descriptors` for
827 another way in which attributes of a class retrieved via its instances may
828 differ from the objects actually stored in the class's :attr:`__dict__`. If no
829 class attribute is found, and the object's class has a :meth:`__getattr__`
830 method, that is called to satisfy the lookup.
831
832 .. index:: triple: class instance; attribute; assignment
833
834 Attribute assignments and deletions update the instance's dictionary, never a
835 class's dictionary. If the class has a :meth:`__setattr__` or
836 :meth:`__delattr__` method, this is called instead of updating the instance
837 dictionary directly.
838
839 .. index::
840 object: numeric
841 object: sequence
842 object: mapping
843
844 Class instances can pretend to be numbers, sequences, or mappings if they have
845 methods with certain special names. See section :ref:`specialnames`.
846
847 .. index::
848 single: __dict__ (instance attribute)
849 single: __class__ (instance attribute)
850
851 Special attributes: :attr:`__dict__` is the attribute dictionary;
852 :attr:`__class__` is the instance's class.
853
854Files
855 .. index::
856 object: file
857 builtin: open
858 single: popen() (in module os)
859 single: makefile() (socket method)
860 single: sys.stdin
861 single: sys.stdout
862 single: sys.stderr
863 single: stdio
864 single: stdin (in module sys)
865 single: stdout (in module sys)
866 single: stderr (in module sys)
867
868 A file object represents an open file. File objects are created by the
869 :func:`open` built-in function, and also by :func:`os.popen`,
870 :func:`os.fdopen`, and the :meth:`makefile` method of socket objects (and
871 perhaps by other functions or methods provided by extension modules). The
872 objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are initialized to
873 file objects corresponding to the interpreter's standard input, output and
874 error streams. See :ref:`bltin-file-objects` for complete documentation of
875 file objects.
876
877Internal types
878 .. index::
879 single: internal type
880 single: types, internal
881
882 A few types used internally by the interpreter are exposed to the user. Their
883 definitions may change with future versions of the interpreter, but they are
884 mentioned here for completeness.
885
886 Code objects
887 .. index::
888 single: bytecode
889 object: code
890
Georg Brandl63fa1682007-10-21 10:24:20 +0000891 Code objects represent *byte-compiled* executable Python code, or :term:`bytecode`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000892 The difference between a code object and a function object is that the function
893 object contains an explicit reference to the function's globals (the module in
894 which it was defined), while a code object contains no context; also the default
895 argument values are stored in the function object, not in the code object
896 (because they represent values calculated at run-time). Unlike function
897 objects, code objects are immutable and contain no references (directly or
898 indirectly) to mutable objects.
899
900 Special read-only attributes: :attr:`co_name` gives the function name;
901 :attr:`co_argcount` is the number of positional arguments (including arguments
902 with default values); :attr:`co_nlocals` is the number of local variables used
903 by the function (including arguments); :attr:`co_varnames` is a tuple containing
904 the names of the local variables (starting with the argument names);
905 :attr:`co_cellvars` is a tuple containing the names of local variables that are
906 referenced by nested functions; :attr:`co_freevars` is a tuple containing the
907 names of free variables; :attr:`co_code` is a string representing the sequence
908 of bytecode instructions; :attr:`co_consts` is a tuple containing the literals
909 used by the bytecode; :attr:`co_names` is a tuple containing the names used by
910 the bytecode; :attr:`co_filename` is the filename from which the code was
911 compiled; :attr:`co_firstlineno` is the first line number of the function;
Georg Brandl63fa1682007-10-21 10:24:20 +0000912 :attr:`co_lnotab` is a string encoding the mapping from bytecode offsets to
Georg Brandl8ec7f652007-08-15 14:28:01 +0000913 line numbers (for details see the source code of the interpreter);
914 :attr:`co_stacksize` is the required stack size (including local variables);
915 :attr:`co_flags` is an integer encoding a number of flags for the interpreter.
916
917 .. index::
918 single: co_argcount (code object attribute)
919 single: co_code (code object attribute)
920 single: co_consts (code object attribute)
921 single: co_filename (code object attribute)
922 single: co_firstlineno (code object attribute)
923 single: co_flags (code object attribute)
924 single: co_lnotab (code object attribute)
925 single: co_name (code object attribute)
926 single: co_names (code object attribute)
927 single: co_nlocals (code object attribute)
928 single: co_stacksize (code object attribute)
929 single: co_varnames (code object attribute)
930 single: co_cellvars (code object attribute)
931 single: co_freevars (code object attribute)
932
933 .. index:: object: generator
934
935 The following flag bits are defined for :attr:`co_flags`: bit ``0x04`` is set if
936 the function uses the ``*arguments`` syntax to accept an arbitrary number of
937 positional arguments; bit ``0x08`` is set if the function uses the
938 ``**keywords`` syntax to accept arbitrary keyword arguments; bit ``0x20`` is set
939 if the function is a generator.
940
941 Future feature declarations (``from __future__ import division``) also use bits
942 in :attr:`co_flags` to indicate whether a code object was compiled with a
943 particular feature enabled: bit ``0x2000`` is set if the function was compiled
944 with future division enabled; bits ``0x10`` and ``0x1000`` were used in earlier
945 versions of Python.
946
947 Other bits in :attr:`co_flags` are reserved for internal use.
948
949 .. index:: single: documentation string
950
951 If a code object represents a function, the first item in :attr:`co_consts` is
952 the documentation string of the function, or ``None`` if undefined.
953
954 Frame objects
955 .. index:: object: frame
956
957 Frame objects represent execution frames. They may occur in traceback objects
958 (see below).
959
960 .. index::
961 single: f_back (frame attribute)
962 single: f_code (frame attribute)
963 single: f_globals (frame attribute)
964 single: f_locals (frame attribute)
965 single: f_lasti (frame attribute)
966 single: f_builtins (frame attribute)
967 single: f_restricted (frame attribute)
968
969 Special read-only attributes: :attr:`f_back` is to the previous stack frame
970 (towards the caller), or ``None`` if this is the bottom stack frame;
971 :attr:`f_code` is the code object being executed in this frame; :attr:`f_locals`
972 is the dictionary used to look up local variables; :attr:`f_globals` is used for
973 global variables; :attr:`f_builtins` is used for built-in (intrinsic) names;
974 :attr:`f_restricted` is a flag indicating whether the function is executing in
975 restricted execution mode; :attr:`f_lasti` gives the precise instruction (this
976 is an index into the bytecode string of the code object).
977
978 .. index::
979 single: f_trace (frame attribute)
980 single: f_exc_type (frame attribute)
981 single: f_exc_value (frame attribute)
982 single: f_exc_traceback (frame attribute)
983 single: f_lineno (frame attribute)
984
985 Special writable attributes: :attr:`f_trace`, if not ``None``, is a function
986 called at the start of each source code line (this is used by the debugger);
987 :attr:`f_exc_type`, :attr:`f_exc_value`, :attr:`f_exc_traceback` represent the
988 last exception raised in the parent frame provided another exception was ever
989 raised in the current frame (in all other cases they are None); :attr:`f_lineno`
990 is the current line number of the frame --- writing to this from within a trace
991 function jumps to the given line (only for the bottom-most frame). A debugger
992 can implement a Jump command (aka Set Next Statement) by writing to f_lineno.
993
994 Traceback objects
995 .. index::
996 object: traceback
997 pair: stack; trace
998 pair: exception; handler
999 pair: execution; stack
1000 single: exc_info (in module sys)
1001 single: exc_traceback (in module sys)
1002 single: last_traceback (in module sys)
1003 single: sys.exc_info
1004 single: sys.exc_traceback
1005 single: sys.last_traceback
1006
1007 Traceback objects represent a stack trace of an exception. A traceback object
1008 is created when an exception occurs. When the search for an exception handler
1009 unwinds the execution stack, at each unwound level a traceback object is
1010 inserted in front of the current traceback. When an exception handler is
1011 entered, the stack trace is made available to the program. (See section
1012 :ref:`try`.) It is accessible as ``sys.exc_traceback``,
1013 and also as the third item of the tuple returned by ``sys.exc_info()``. The
1014 latter is the preferred interface, since it works correctly when the program is
1015 using multiple threads. When the program contains no suitable handler, the stack
1016 trace is written (nicely formatted) to the standard error stream; if the
1017 interpreter is interactive, it is also made available to the user as
1018 ``sys.last_traceback``.
1019
1020 .. index::
1021 single: tb_next (traceback attribute)
1022 single: tb_frame (traceback attribute)
1023 single: tb_lineno (traceback attribute)
1024 single: tb_lasti (traceback attribute)
1025 statement: try
1026
1027 Special read-only attributes: :attr:`tb_next` is the next level in the stack
1028 trace (towards the frame where the exception occurred), or ``None`` if there is
1029 no next level; :attr:`tb_frame` points to the execution frame of the current
1030 level; :attr:`tb_lineno` gives the line number where the exception occurred;
1031 :attr:`tb_lasti` indicates the precise instruction. The line number and last
1032 instruction in the traceback may differ from the line number of its frame object
1033 if the exception occurred in a :keyword:`try` statement with no matching except
1034 clause or with a finally clause.
1035
1036 Slice objects
1037 .. index:: builtin: slice
1038
1039 Slice objects are used to represent slices when *extended slice syntax* is used.
1040 This is a slice using two colons, or multiple slices or ellipses separated by
1041 commas, e.g., ``a[i:j:step]``, ``a[i:j, k:l]``, or ``a[..., i:j]``. They are
1042 also created by the built-in :func:`slice` function.
1043
1044 .. index::
1045 single: start (slice object attribute)
1046 single: stop (slice object attribute)
1047 single: step (slice object attribute)
1048
1049 Special read-only attributes: :attr:`start` is the lower bound; :attr:`stop` is
1050 the upper bound; :attr:`step` is the step value; each is ``None`` if omitted.
1051 These attributes can have any type.
1052
1053 Slice objects support one method:
1054
1055
1056 .. method:: slice.indices(self, length)
1057
1058 This method takes a single integer argument *length* and computes information
1059 about the extended slice that the slice object would describe if applied to a
1060 sequence of *length* items. It returns a tuple of three integers; respectively
1061 these are the *start* and *stop* indices and the *step* or stride length of the
1062 slice. Missing or out-of-bounds indices are handled in a manner consistent with
1063 regular slices.
1064
1065 .. versionadded:: 2.3
1066
1067 Static method objects
1068 Static method objects provide a way of defeating the transformation of function
1069 objects to method objects described above. A static method object is a wrapper
1070 around any other object, usually a user-defined method object. When a static
1071 method object is retrieved from a class or a class instance, the object actually
1072 returned is the wrapped object, which is not subject to any further
1073 transformation. Static method objects are not themselves callable, although the
1074 objects they wrap usually are. Static method objects are created by the built-in
1075 :func:`staticmethod` constructor.
1076
1077 Class method objects
1078 A class method object, like a static method object, is a wrapper around another
1079 object that alters the way in which that object is retrieved from classes and
1080 class instances. The behaviour of class method objects upon such retrieval is
1081 described above, under "User-defined methods". Class method objects are created
1082 by the built-in :func:`classmethod` constructor.
1083
Georg Brandl8ec7f652007-08-15 14:28:01 +00001084
Georg Brandla7395032007-10-21 12:15:05 +00001085.. _newstyle:
Georg Brandl8ec7f652007-08-15 14:28:01 +00001086
1087New-style and classic classes
1088=============================
1089
Nick Coghlana5107482008-08-04 12:40:59 +00001090Classes and instances come in two flavors: old-style (or classic) and new-style.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001091
1092Up to Python 2.1, old-style classes were the only flavour available to the user.
1093The concept of (old-style) class is unrelated to the concept of type: if *x* is
1094an instance of an old-style class, then ``x.__class__`` designates the class of
1095*x*, but ``type(x)`` is always ``<type 'instance'>``. This reflects the fact
1096that all old-style instances, independently of their class, are implemented with
1097a single built-in type, called ``instance``.
1098
1099New-style classes were introduced in Python 2.2 to unify classes and types. A
Georg Brandl63cdb862008-02-03 12:29:00 +00001100new-style class is neither more nor less than a user-defined type. If *x* is an
Nick Coghlana5107482008-08-04 12:40:59 +00001101instance of a new-style class, then ``type(x)`` is typically the same as
1102``x.__class__`` (although this is not guaranteed - a new-style class instance is
1103permitted to override the value returned for ``x.__class__``).
Georg Brandl8ec7f652007-08-15 14:28:01 +00001104
1105The major motivation for introducing new-style classes is to provide a unified
Nick Coghlana5107482008-08-04 12:40:59 +00001106object model with a full meta-model. It also has a number of practical
Georg Brandl8ec7f652007-08-15 14:28:01 +00001107benefits, like the ability to subclass most built-in types, or the introduction
1108of "descriptors", which enable computed properties.
1109
1110For compatibility reasons, classes are still old-style by default. New-style
1111classes are created by specifying another new-style class (i.e. a type) as a
1112parent class, or the "top-level type" :class:`object` if no other parent is
1113needed. The behaviour of new-style classes differs from that of old-style
1114classes in a number of important details in addition to what :func:`type`
1115returns. Some of these changes are fundamental to the new object model, like
1116the way special methods are invoked. Others are "fixes" that could not be
1117implemented before for compatibility concerns, like the method resolution order
1118in case of multiple inheritance.
1119
Nick Coghlana5107482008-08-04 12:40:59 +00001120While this manual aims to provide comprehensive coverage of Python's class
1121mechanics, it may still be lacking in some areas when it comes to its coverage
1122of new-style classes. Please see http://www.python.org/doc/newstyle/ for
1123sources of additional information.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001124
1125.. index::
Georg Brandl62658332008-01-05 19:29:45 +00001126 single: class; new-style
1127 single: class; classic
1128 single: class; old-style
Georg Brandl8ec7f652007-08-15 14:28:01 +00001129
Nick Coghlana5107482008-08-04 12:40:59 +00001130Old-style classes are removed in Python 3.0, leaving only the semantics of
1131new-style classes.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001132
Georg Brandl8ec7f652007-08-15 14:28:01 +00001133
1134.. _specialnames:
1135
1136Special method names
1137====================
1138
1139.. index::
1140 pair: operator; overloading
1141 single: __getitem__() (mapping object method)
1142
1143A class can implement certain operations that are invoked by special syntax
1144(such as arithmetic operations or subscripting and slicing) by defining methods
1145with special names. This is Python's approach to :dfn:`operator overloading`,
1146allowing classes to define their own behavior with respect to language
1147operators. For instance, if a class defines a method named :meth:`__getitem__`,
Nick Coghlana5107482008-08-04 12:40:59 +00001148and ``x`` is an instance of this class, then ``x[i]`` is roughly equivalent
1149to ``x.__getitem__(i)`` for old-style classes and ``type(x).__getitem__(x, i)``
1150for new-style classes. Except where mentioned, attempts to execute an
1151operation raise an exception when no appropriate method is defined (typically
1152:exc:`AttributeError` or :exc:`TypeError`).
Georg Brandl5768d572007-09-05 13:36:44 +00001153
Georg Brandl8ec7f652007-08-15 14:28:01 +00001154When implementing a class that emulates any built-in type, it is important that
1155the emulation only be implemented to the degree that it makes sense for the
1156object being modelled. For example, some sequences may work well with retrieval
1157of individual elements, but extracting a slice may not make sense. (One example
1158of this is the :class:`NodeList` interface in the W3C's Document Object Model.)
1159
1160
1161.. _customization:
1162
1163Basic customization
1164-------------------
1165
Georg Brandl8ec7f652007-08-15 14:28:01 +00001166.. method:: object.__new__(cls[, ...])
1167
Georg Brandlfa71a902008-12-05 09:08:28 +00001168 .. index:: pair: subclassing; immutable types
1169
Georg Brandl8ec7f652007-08-15 14:28:01 +00001170 Called to create a new instance of class *cls*. :meth:`__new__` is a static
1171 method (special-cased so you need not declare it as such) that takes the class
1172 of which an instance was requested as its first argument. The remaining
1173 arguments are those passed to the object constructor expression (the call to the
1174 class). The return value of :meth:`__new__` should be the new object instance
1175 (usually an instance of *cls*).
1176
1177 Typical implementations create a new instance of the class by invoking the
1178 superclass's :meth:`__new__` method using ``super(currentclass,
1179 cls).__new__(cls[, ...])`` with appropriate arguments and then modifying the
1180 newly-created instance as necessary before returning it.
1181
1182 If :meth:`__new__` returns an instance of *cls*, then the new instance's
1183 :meth:`__init__` method will be invoked like ``__init__(self[, ...])``, where
1184 *self* is the new instance and the remaining arguments are the same as were
1185 passed to :meth:`__new__`.
1186
1187 If :meth:`__new__` does not return an instance of *cls*, then the new instance's
1188 :meth:`__init__` method will not be invoked.
1189
1190 :meth:`__new__` is intended mainly to allow subclasses of immutable types (like
Georg Brandl3ccb49a2008-01-07 19:17:10 +00001191 int, str, or tuple) to customize instance creation. It is also commonly
1192 overridden in custom metaclasses in order to customize class creation.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001193
1194
1195.. method:: object.__init__(self[, ...])
1196
1197 .. index:: pair: class; constructor
1198
1199 Called when the instance is created. The arguments are those passed to the
1200 class constructor expression. If a base class has an :meth:`__init__` method,
1201 the derived class's :meth:`__init__` method, if any, must explicitly call it to
1202 ensure proper initialization of the base class part of the instance; for
1203 example: ``BaseClass.__init__(self, [args...])``. As a special constraint on
1204 constructors, no value may be returned; doing so will cause a :exc:`TypeError`
1205 to be raised at runtime.
1206
1207
1208.. method:: object.__del__(self)
1209
1210 .. index::
1211 single: destructor
1212 statement: del
1213
1214 Called when the instance is about to be destroyed. This is also called a
1215 destructor. If a base class has a :meth:`__del__` method, the derived class's
1216 :meth:`__del__` method, if any, must explicitly call it to ensure proper
1217 deletion of the base class part of the instance. Note that it is possible
1218 (though not recommended!) for the :meth:`__del__` method to postpone destruction
1219 of the instance by creating a new reference to it. It may then be called at a
1220 later time when this new reference is deleted. It is not guaranteed that
1221 :meth:`__del__` methods are called for objects that still exist when the
1222 interpreter exits.
1223
1224 .. note::
1225
1226 ``del x`` doesn't directly call ``x.__del__()`` --- the former decrements
1227 the reference count for ``x`` by one, and the latter is only called when
1228 ``x``'s reference count reaches zero. Some common situations that may
1229 prevent the reference count of an object from going to zero include:
1230 circular references between objects (e.g., a doubly-linked list or a tree
1231 data structure with parent and child pointers); a reference to the object
1232 on the stack frame of a function that caught an exception (the traceback
1233 stored in ``sys.exc_traceback`` keeps the stack frame alive); or a
1234 reference to the object on the stack frame that raised an unhandled
1235 exception in interactive mode (the traceback stored in
1236 ``sys.last_traceback`` keeps the stack frame alive). The first situation
1237 can only be remedied by explicitly breaking the cycles; the latter two
1238 situations can be resolved by storing ``None`` in ``sys.exc_traceback`` or
1239 ``sys.last_traceback``. Circular references which are garbage are
1240 detected when the option cycle detector is enabled (it's on by default),
1241 but can only be cleaned up if there are no Python-level :meth:`__del__`
1242 methods involved. Refer to the documentation for the :mod:`gc` module for
1243 more information about how :meth:`__del__` methods are handled by the
1244 cycle detector, particularly the description of the ``garbage`` value.
1245
1246 .. warning::
1247
1248 Due to the precarious circumstances under which :meth:`__del__` methods are
1249 invoked, exceptions that occur during their execution are ignored, and a warning
1250 is printed to ``sys.stderr`` instead. Also, when :meth:`__del__` is invoked in
1251 response to a module being deleted (e.g., when execution of the program is
1252 done), other globals referenced by the :meth:`__del__` method may already have
Brett Cannone4b6ab72009-01-29 03:58:16 +00001253 been deleted or in the process of being torn down (e.g. the import
1254 machinery shutting down). For this reason, :meth:`__del__` methods
1255 should do the absolute
Georg Brandl8ec7f652007-08-15 14:28:01 +00001256 minimum needed to maintain external invariants. Starting with version 1.5,
1257 Python guarantees that globals whose name begins with a single underscore are
1258 deleted from their module before other globals are deleted; if no other
1259 references to such globals exist, this may help in assuring that imported
1260 modules are still available at the time when the :meth:`__del__` method is
1261 called.
1262
1263
1264.. method:: object.__repr__(self)
1265
1266 .. index:: builtin: repr
1267
1268 Called by the :func:`repr` built-in function and by string conversions (reverse
1269 quotes) to compute the "official" string representation of an object. If at all
1270 possible, this should look like a valid Python expression that could be used to
1271 recreate an object with the same value (given an appropriate environment). If
1272 this is not possible, a string of the form ``<...some useful description...>``
1273 should be returned. The return value must be a string object. If a class
1274 defines :meth:`__repr__` but not :meth:`__str__`, then :meth:`__repr__` is also
1275 used when an "informal" string representation of instances of that class is
1276 required.
1277
1278 .. index::
1279 pair: string; conversion
1280 pair: reverse; quotes
1281 pair: backward; quotes
1282 single: back-quotes
1283
1284 This is typically used for debugging, so it is important that the representation
1285 is information-rich and unambiguous.
1286
1287
1288.. method:: object.__str__(self)
1289
1290 .. index::
1291 builtin: str
1292 statement: print
1293
1294 Called by the :func:`str` built-in function and by the :keyword:`print`
1295 statement to compute the "informal" string representation of an object. This
1296 differs from :meth:`__repr__` in that it does not have to be a valid Python
1297 expression: a more convenient or concise representation may be used instead.
1298 The return value must be a string object.
1299
1300
1301.. method:: object.__lt__(self, other)
1302 object.__le__(self, other)
1303 object.__eq__(self, other)
1304 object.__ne__(self, other)
1305 object.__gt__(self, other)
1306 object.__ge__(self, other)
1307
1308 .. versionadded:: 2.1
1309
Georg Brandl7c3e79f2007-11-02 20:06:17 +00001310 .. index::
1311 single: comparisons
1312
Georg Brandl8ec7f652007-08-15 14:28:01 +00001313 These are the so-called "rich comparison" methods, and are called for comparison
1314 operators in preference to :meth:`__cmp__` below. The correspondence between
1315 operator symbols and method names is as follows: ``x<y`` calls ``x.__lt__(y)``,
1316 ``x<=y`` calls ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` and
1317 ``x<>y`` call ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` calls
1318 ``x.__ge__(y)``.
1319
1320 A rich comparison method may return the singleton ``NotImplemented`` if it does
1321 not implement the operation for a given pair of arguments. By convention,
1322 ``False`` and ``True`` are returned for a successful comparison. However, these
1323 methods can return any value, so if the comparison operator is used in a Boolean
1324 context (e.g., in the condition of an ``if`` statement), Python will call
1325 :func:`bool` on the value to determine if the result is true or false.
1326
Georg Brandl7c3e79f2007-11-02 20:06:17 +00001327 There are no implied relationships among the comparison operators. The truth
1328 of ``x==y`` does not imply that ``x!=y`` is false. Accordingly, when
1329 defining :meth:`__eq__`, one should also define :meth:`__ne__` so that the
1330 operators will behave as expected. See the paragraph on :meth:`__hash__` for
1331 some important notes on creating :term:`hashable` objects which support
1332 custom comparison operations and are usable as dictionary keys.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001333
Georg Brandl7c3e79f2007-11-02 20:06:17 +00001334 There are no swapped-argument versions of these methods (to be used when the
1335 left argument does not support the operation but the right argument does);
1336 rather, :meth:`__lt__` and :meth:`__gt__` are each other's reflection,
Georg Brandl8ec7f652007-08-15 14:28:01 +00001337 :meth:`__le__` and :meth:`__ge__` are each other's reflection, and
1338 :meth:`__eq__` and :meth:`__ne__` are their own reflection.
1339
1340 Arguments to rich comparison methods are never coerced.
1341
1342
1343.. method:: object.__cmp__(self, other)
1344
1345 .. index::
1346 builtin: cmp
1347 single: comparisons
1348
Georg Brandl7c3e79f2007-11-02 20:06:17 +00001349 Called by comparison operations if rich comparison (see above) is not
1350 defined. Should return a negative integer if ``self < other``, zero if
1351 ``self == other``, a positive integer if ``self > other``. If no
1352 :meth:`__cmp__`, :meth:`__eq__` or :meth:`__ne__` operation is defined, class
1353 instances are compared by object identity ("address"). See also the
1354 description of :meth:`__hash__` for some important notes on creating
1355 :term:`hashable` objects which support custom comparison operations and are
1356 usable as dictionary keys. (Note: the restriction that exceptions are not
1357 propagated by :meth:`__cmp__` has been removed since Python 1.5.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001358
1359
1360.. method:: object.__rcmp__(self, other)
1361
1362 .. versionchanged:: 2.1
1363 No longer supported.
1364
1365
1366.. method:: object.__hash__(self)
1367
1368 .. index::
1369 object: dictionary
1370 builtin: hash
1371
Georg Brandld2094602008-12-05 08:51:30 +00001372 Called by built-in function :func:`hash` and for operations on members of
1373 hashed collections including :class:`set`, :class:`frozenset`, and
1374 :class:`dict`. :meth:`__hash__` should return an integer. The only required
1375 property is that objects which compare equal have the same hash value; it is
1376 advised to somehow mix together (e.g. using exclusive or) the hash values for
1377 the components of the object that also play a part in comparison of objects.
Georg Brandl7c3e79f2007-11-02 20:06:17 +00001378
1379 If a class does not define a :meth:`__cmp__` or :meth:`__eq__` method it
1380 should not define a :meth:`__hash__` operation either; if it defines
1381 :meth:`__cmp__` or :meth:`__eq__` but not :meth:`__hash__`, its instances
Georg Brandld2094602008-12-05 08:51:30 +00001382 will not be usable in hashed collections. If a class defines mutable objects
Georg Brandl7c3e79f2007-11-02 20:06:17 +00001383 and implements a :meth:`__cmp__` or :meth:`__eq__` method, it should not
Georg Brandld2094602008-12-05 08:51:30 +00001384 implement :meth:`__hash__`, since hashable collection implementations require
1385 that a object's hash value is immutable (if the object's hash value changes,
1386 it will be in the wrong hash bucket).
Georg Brandl7c3e79f2007-11-02 20:06:17 +00001387
1388 User-defined classes have :meth:`__cmp__` and :meth:`__hash__` methods
Nick Coghlan82358692008-08-31 13:10:50 +00001389 by default; with them, all objects compare unequal (except with themselves)
1390 and ``x.__hash__()`` returns ``id(x)``.
1391
1392 Classes which inherit a :meth:`__hash__` method from a parent class but
1393 change the meaning of :meth:`__cmp__` or :meth:`__eq__` such that the hash
1394 value returned is no longer appropriate (e.g. by switching to a value-based
1395 concept of equality instead of the default identity based equality) can
Georg Brandld2094602008-12-05 08:51:30 +00001396 explicitly flag themselves as being unhashable by setting ``__hash__ = None``
1397 in the class definition. Doing so means that not only will instances of the
1398 class raise an appropriate :exc:`TypeError` when a program attempts to
1399 retrieve their hash value, but they will also be correctly identified as
1400 unhashable when checking ``isinstance(obj, collections.Hashable)`` (unlike
1401 classes which define their own :meth:`__hash__` to explicitly raise
1402 :exc:`TypeError`).
Georg Brandl8ec7f652007-08-15 14:28:01 +00001403
1404 .. versionchanged:: 2.5
Georg Brandl7c3e79f2007-11-02 20:06:17 +00001405 :meth:`__hash__` may now also return a long integer object; the 32-bit
1406 integer is then derived from the hash of that object.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001407
Nick Coghlan82358692008-08-31 13:10:50 +00001408 .. versionchanged:: 2.6
1409 :attr:`__hash__` may now be set to :const:`None` to explicitly flag
1410 instances of a class as unhashable.
1411
Georg Brandl8ec7f652007-08-15 14:28:01 +00001412
1413.. method:: object.__nonzero__(self)
1414
1415 .. index:: single: __len__() (mapping object method)
1416
Georg Brandl40e15ed2009-04-05 21:48:06 +00001417 Called to implement truth value testing and the built-in operation ``bool()``;
Georg Brandl8ec7f652007-08-15 14:28:01 +00001418 should return ``False`` or ``True``, or their integer equivalents ``0`` or
Georg Brandl40e15ed2009-04-05 21:48:06 +00001419 ``1``. When this method is not defined, :meth:`__len__` is called, if it is
1420 defined, and the object is considered true if its result is nonzero.
1421 If a class defines neither :meth:`__len__` nor :meth:`__nonzero__`, all its
1422 instances are considered true.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001423
1424
1425.. method:: object.__unicode__(self)
1426
1427 .. index:: builtin: unicode
1428
1429 Called to implement :func:`unicode` builtin; should return a Unicode object.
1430 When this method is not defined, string conversion is attempted, and the result
1431 of string conversion is converted to Unicode using the system default encoding.
1432
1433
1434.. _attribute-access:
1435
1436Customizing attribute access
1437----------------------------
1438
1439The following methods can be defined to customize the meaning of attribute
1440access (use of, assignment to, or deletion of ``x.name``) for class instances.
1441
1442
1443.. method:: object.__getattr__(self, name)
1444
1445 Called when an attribute lookup has not found the attribute in the usual places
1446 (i.e. it is not an instance attribute nor is it found in the class tree for
1447 ``self``). ``name`` is the attribute name. This method should return the
1448 (computed) attribute value or raise an :exc:`AttributeError` exception.
1449
1450 .. index:: single: __setattr__() (object method)
1451
1452 Note that if the attribute is found through the normal mechanism,
1453 :meth:`__getattr__` is not called. (This is an intentional asymmetry between
1454 :meth:`__getattr__` and :meth:`__setattr__`.) This is done both for efficiency
Georg Brandlc1768142008-08-30 09:52:44 +00001455 reasons and because otherwise :meth:`__getattr__` would have no way to access
Georg Brandl8ec7f652007-08-15 14:28:01 +00001456 other attributes of the instance. Note that at least for instance variables,
1457 you can fake total control by not inserting any values in the instance attribute
1458 dictionary (but instead inserting them in another object). See the
1459 :meth:`__getattribute__` method below for a way to actually get total control in
1460 new-style classes.
1461
1462
1463.. method:: object.__setattr__(self, name, value)
1464
1465 Called when an attribute assignment is attempted. This is called instead of the
1466 normal mechanism (i.e. store the value in the instance dictionary). *name* is
1467 the attribute name, *value* is the value to be assigned to it.
1468
1469 .. index:: single: __dict__ (instance attribute)
1470
1471 If :meth:`__setattr__` wants to assign to an instance attribute, it should not
1472 simply execute ``self.name = value`` --- this would cause a recursive call to
1473 itself. Instead, it should insert the value in the dictionary of instance
1474 attributes, e.g., ``self.__dict__[name] = value``. For new-style classes,
1475 rather than accessing the instance dictionary, it should call the base class
1476 method with the same name, for example, ``object.__setattr__(self, name,
1477 value)``.
1478
1479
1480.. method:: object.__delattr__(self, name)
1481
1482 Like :meth:`__setattr__` but for attribute deletion instead of assignment. This
1483 should only be implemented if ``del obj.name`` is meaningful for the object.
1484
1485
1486.. _new-style-attribute-access:
1487
1488More attribute access for new-style classes
1489^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1490
1491The following methods only apply to new-style classes.
1492
1493
1494.. method:: object.__getattribute__(self, name)
1495
1496 Called unconditionally to implement attribute accesses for instances of the
1497 class. If the class also defines :meth:`__getattr__`, the latter will not be
1498 called unless :meth:`__getattribute__` either calls it explicitly or raises an
1499 :exc:`AttributeError`. This method should return the (computed) attribute value
1500 or raise an :exc:`AttributeError` exception. In order to avoid infinite
1501 recursion in this method, its implementation should always call the base class
1502 method with the same name to access any attributes it needs, for example,
1503 ``object.__getattribute__(self, name)``.
1504
Nick Coghlana5107482008-08-04 12:40:59 +00001505 .. note::
1506
1507 This method may still be bypassed when looking up special methods as the
1508 result of implicit invocation via language syntax or builtin functions.
1509 See :ref:`new-style-special-lookup`.
1510
Georg Brandl8ec7f652007-08-15 14:28:01 +00001511
1512.. _descriptors:
1513
1514Implementing Descriptors
1515^^^^^^^^^^^^^^^^^^^^^^^^
1516
1517The following methods only apply when an instance of the class containing the
1518method (a so-called *descriptor* class) appears in the class dictionary of
1519another new-style class, known as the *owner* class. In the examples below, "the
1520attribute" refers to the attribute whose name is the key of the property in the
1521owner class' ``__dict__``. Descriptors can only be implemented as new-style
1522classes themselves.
1523
1524
1525.. method:: object.__get__(self, instance, owner)
1526
1527 Called to get the attribute of the owner class (class attribute access) or of an
1528 instance of that class (instance attribute access). *owner* is always the owner
1529 class, while *instance* is the instance that the attribute was accessed through,
1530 or ``None`` when the attribute is accessed through the *owner*. This method
1531 should return the (computed) attribute value or raise an :exc:`AttributeError`
1532 exception.
1533
1534
1535.. method:: object.__set__(self, instance, value)
1536
1537 Called to set the attribute on an instance *instance* of the owner class to a
1538 new value, *value*.
1539
1540
1541.. method:: object.__delete__(self, instance)
1542
1543 Called to delete the attribute on an instance *instance* of the owner class.
1544
1545
1546.. _descriptor-invocation:
1547
1548Invoking Descriptors
1549^^^^^^^^^^^^^^^^^^^^
1550
1551In general, a descriptor is an object attribute with "binding behavior", one
1552whose attribute access has been overridden by methods in the descriptor
1553protocol: :meth:`__get__`, :meth:`__set__`, and :meth:`__delete__`. If any of
1554those methods are defined for an object, it is said to be a descriptor.
1555
1556The default behavior for attribute access is to get, set, or delete the
1557attribute from an object's dictionary. For instance, ``a.x`` has a lookup chain
1558starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and
1559continuing through the base classes of ``type(a)`` excluding metaclasses.
1560
1561However, if the looked-up value is an object defining one of the descriptor
1562methods, then Python may override the default behavior and invoke the descriptor
1563method instead. Where this occurs in the precedence chain depends on which
1564descriptor methods were defined and how they were called. Note that descriptors
1565are only invoked for new style objects or classes (ones that subclass
1566:class:`object()` or :class:`type()`).
1567
1568The starting point for descriptor invocation is a binding, ``a.x``. How the
1569arguments are assembled depends on ``a``:
1570
1571Direct Call
1572 The simplest and least common call is when user code directly invokes a
1573 descriptor method: ``x.__get__(a)``.
1574
1575Instance Binding
1576 If binding to a new-style object instance, ``a.x`` is transformed into the call:
1577 ``type(a).__dict__['x'].__get__(a, type(a))``.
1578
1579Class Binding
1580 If binding to a new-style class, ``A.x`` is transformed into the call:
1581 ``A.__dict__['x'].__get__(None, A)``.
1582
1583Super Binding
1584 If ``a`` is an instance of :class:`super`, then the binding ``super(B,
1585 obj).m()`` searches ``obj.__class__.__mro__`` for the base class ``A``
1586 immediately preceding ``B`` and then invokes the descriptor with the call:
1587 ``A.__dict__['m'].__get__(obj, A)``.
1588
1589For instance bindings, the precedence of descriptor invocation depends on the
Georg Brandl37614222007-08-23 21:42:54 +00001590which descriptor methods are defined. Normally, data descriptors define both
1591:meth:`__get__` and :meth:`__set__`, while non-data descriptors have just the
Georg Brandl8ec7f652007-08-15 14:28:01 +00001592:meth:`__get__` method. Data descriptors always override a redefinition in an
1593instance dictionary. In contrast, non-data descriptors can be overridden by
Georg Brandl37614222007-08-23 21:42:54 +00001594instances. [#]_
Georg Brandl8ec7f652007-08-15 14:28:01 +00001595
1596Python methods (including :func:`staticmethod` and :func:`classmethod`) are
1597implemented as non-data descriptors. Accordingly, instances can redefine and
1598override methods. This allows individual instances to acquire behaviors that
1599differ from other instances of the same class.
1600
1601The :func:`property` function is implemented as a data descriptor. Accordingly,
1602instances cannot override the behavior of a property.
1603
1604
1605.. _slots:
1606
1607__slots__
1608^^^^^^^^^
1609
1610By default, instances of both old and new-style classes have a dictionary for
1611attribute storage. This wastes space for objects having very few instance
1612variables. The space consumption can become acute when creating large numbers
1613of instances.
1614
1615The default can be overridden by defining *__slots__* in a new-style class
1616definition. The *__slots__* declaration takes a sequence of instance variables
1617and reserves just enough space in each instance to hold a value for each
1618variable. Space is saved because *__dict__* is not created for each instance.
1619
1620
1621.. data:: __slots__
1622
1623 This class variable can be assigned a string, iterable, or sequence of strings
1624 with variable names used by instances. If defined in a new-style class,
1625 *__slots__* reserves space for the declared variables and prevents the automatic
1626 creation of *__dict__* and *__weakref__* for each instance.
1627
1628 .. versionadded:: 2.2
1629
1630Notes on using *__slots__*
1631
Georg Brandl3de1e692008-07-19 13:09:42 +00001632* When inheriting from a class without *__slots__*, the *__dict__* attribute of
1633 that class will always be accessible, so a *__slots__* definition in the
1634 subclass is meaningless.
1635
Georg Brandl8ec7f652007-08-15 14:28:01 +00001636* Without a *__dict__* variable, instances cannot be assigned new variables not
1637 listed in the *__slots__* definition. Attempts to assign to an unlisted
1638 variable name raises :exc:`AttributeError`. If dynamic assignment of new
1639 variables is desired, then add ``'__dict__'`` to the sequence of strings in the
1640 *__slots__* declaration.
1641
1642 .. versionchanged:: 2.3
1643 Previously, adding ``'__dict__'`` to the *__slots__* declaration would not
1644 enable the assignment of new attributes not specifically listed in the sequence
1645 of instance variable names.
1646
1647* Without a *__weakref__* variable for each instance, classes defining
1648 *__slots__* do not support weak references to its instances. If weak reference
1649 support is needed, then add ``'__weakref__'`` to the sequence of strings in the
1650 *__slots__* declaration.
1651
1652 .. versionchanged:: 2.3
1653 Previously, adding ``'__weakref__'`` to the *__slots__* declaration would not
1654 enable support for weak references.
1655
1656* *__slots__* are implemented at the class level by creating descriptors
1657 (:ref:`descriptors`) for each variable name. As a result, class attributes
1658 cannot be used to set default values for instance variables defined by
1659 *__slots__*; otherwise, the class attribute would overwrite the descriptor
1660 assignment.
1661
1662* If a class defines a slot also defined in a base class, the instance variable
1663 defined by the base class slot is inaccessible (except by retrieving its
1664 descriptor directly from the base class). This renders the meaning of the
1665 program undefined. In the future, a check may be added to prevent this.
1666
1667* The action of a *__slots__* declaration is limited to the class where it is
1668 defined. As a result, subclasses will have a *__dict__* unless they also define
1669 *__slots__*.
1670
Georg Brandl4aef7032008-11-07 08:56:27 +00001671* Nonempty *__slots__* does not work for classes derived from "variable-length"
1672 built-in types such as :class:`long`, :class:`str` and :class:`tuple`.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001673
1674* Any non-string iterable may be assigned to *__slots__*. Mappings may also be
1675 used; however, in the future, special meaning may be assigned to the values
1676 corresponding to each key.
1677
1678* *__class__* assignment works only if both classes have the same *__slots__*.
1679
1680 .. versionchanged:: 2.6
1681 Previously, *__class__* assignment raised an error if either new or old class
1682 had *__slots__*.
1683
1684
1685.. _metaclasses:
1686
1687Customizing class creation
1688--------------------------
1689
1690By default, new-style classes are constructed using :func:`type`. A class
1691definition is read into a separate namespace and the value of class name is
1692bound to the result of ``type(name, bases, dict)``.
1693
1694When the class definition is read, if *__metaclass__* is defined then the
Georg Brandl3ccb49a2008-01-07 19:17:10 +00001695callable assigned to it will be called instead of :func:`type`. This allows
Georg Brandl8ec7f652007-08-15 14:28:01 +00001696classes or functions to be written which monitor or alter the class creation
1697process:
1698
1699* Modifying the class dictionary prior to the class being created.
1700
1701* Returning an instance of another class -- essentially performing the role of a
1702 factory function.
1703
Georg Brandl3ccb49a2008-01-07 19:17:10 +00001704These steps will have to be performed in the metaclass's :meth:`__new__` method
1705-- :meth:`type.__new__` can then be called from this method to create a class
1706with different properties. This example adds a new element to the class
1707dictionary before creating the class::
1708
1709 class metacls(type):
1710 def __new__(mcs, name, bases, dict):
1711 dict['foo'] = 'metacls was here'
1712 return type.__new__(mcs, name, bases, dict)
1713
1714You can of course also override other class methods (or add new methods); for
1715example defining a custom :meth:`__call__` method in the metaclass allows custom
1716behavior when the class is called, e.g. not always creating a new instance.
1717
Georg Brandl8ec7f652007-08-15 14:28:01 +00001718
1719.. data:: __metaclass__
1720
1721 This variable can be any callable accepting arguments for ``name``, ``bases``,
1722 and ``dict``. Upon class creation, the callable is used instead of the built-in
1723 :func:`type`.
1724
1725 .. versionadded:: 2.2
1726
1727The appropriate metaclass is determined by the following precedence rules:
1728
1729* If ``dict['__metaclass__']`` exists, it is used.
1730
1731* Otherwise, if there is at least one base class, its metaclass is used (this
1732 looks for a *__class__* attribute first and if not found, uses its type).
1733
1734* Otherwise, if a global variable named __metaclass__ exists, it is used.
1735
1736* Otherwise, the old-style, classic metaclass (types.ClassType) is used.
1737
1738The potential uses for metaclasses are boundless. Some ideas that have been
1739explored including logging, interface checking, automatic delegation, automatic
1740property creation, proxies, frameworks, and automatic resource
1741locking/synchronization.
1742
1743
1744.. _callable-types:
1745
1746Emulating callable objects
1747--------------------------
1748
1749
1750.. method:: object.__call__(self[, args...])
1751
1752 .. index:: pair: call; instance
1753
1754 Called when the instance is "called" as a function; if this method is defined,
1755 ``x(arg1, arg2, ...)`` is a shorthand for ``x.__call__(arg1, arg2, ...)``.
1756
1757
1758.. _sequence-types:
1759
1760Emulating container types
1761-------------------------
1762
1763The following methods can be defined to implement container objects. Containers
1764usually are sequences (such as lists or tuples) or mappings (like dictionaries),
1765but can represent other containers as well. The first set of methods is used
1766either to emulate a sequence or to emulate a mapping; the difference is that for
1767a sequence, the allowable keys should be the integers *k* for which ``0 <= k <
1768N`` where *N* is the length of the sequence, or slice objects, which define a
1769range of items. (For backwards compatibility, the method :meth:`__getslice__`
1770(see below) can also be defined to handle simple, but not extended slices.) It
1771is also recommended that mappings provide the methods :meth:`keys`,
1772:meth:`values`, :meth:`items`, :meth:`has_key`, :meth:`get`, :meth:`clear`,
1773:meth:`setdefault`, :meth:`iterkeys`, :meth:`itervalues`, :meth:`iteritems`,
1774:meth:`pop`, :meth:`popitem`, :meth:`copy`, and :meth:`update` behaving similar
1775to those for Python's standard dictionary objects. The :mod:`UserDict` module
1776provides a :class:`DictMixin` class to help create those methods from a base set
1777of :meth:`__getitem__`, :meth:`__setitem__`, :meth:`__delitem__`, and
1778:meth:`keys`. Mutable sequences should provide methods :meth:`append`,
1779:meth:`count`, :meth:`index`, :meth:`extend`, :meth:`insert`, :meth:`pop`,
1780:meth:`remove`, :meth:`reverse` and :meth:`sort`, like Python standard list
1781objects. Finally, sequence types should implement addition (meaning
1782concatenation) and multiplication (meaning repetition) by defining the methods
1783:meth:`__add__`, :meth:`__radd__`, :meth:`__iadd__`, :meth:`__mul__`,
1784:meth:`__rmul__` and :meth:`__imul__` described below; they should not define
1785:meth:`__coerce__` or other numerical operators. It is recommended that both
1786mappings and sequences implement the :meth:`__contains__` method to allow
1787efficient use of the ``in`` operator; for mappings, ``in`` should be equivalent
1788of :meth:`has_key`; for sequences, it should search through the values. It is
1789further recommended that both mappings and sequences implement the
1790:meth:`__iter__` method to allow efficient iteration through the container; for
1791mappings, :meth:`__iter__` should be the same as :meth:`iterkeys`; for
1792sequences, it should iterate through the values.
1793
1794
1795.. method:: object.__len__(self)
1796
1797 .. index::
1798 builtin: len
1799 single: __nonzero__() (object method)
1800
1801 Called to implement the built-in function :func:`len`. Should return the length
1802 of the object, an integer ``>=`` 0. Also, an object that doesn't define a
1803 :meth:`__nonzero__` method and whose :meth:`__len__` method returns zero is
1804 considered to be false in a Boolean context.
1805
1806
1807.. method:: object.__getitem__(self, key)
1808
1809 .. index:: object: slice
1810
1811 Called to implement evaluation of ``self[key]``. For sequence types, the
1812 accepted keys should be integers and slice objects. Note that the special
1813 interpretation of negative indexes (if the class wishes to emulate a sequence
1814 type) is up to the :meth:`__getitem__` method. If *key* is of an inappropriate
1815 type, :exc:`TypeError` may be raised; if of a value outside the set of indexes
1816 for the sequence (after any special interpretation of negative values),
1817 :exc:`IndexError` should be raised. For mapping types, if *key* is missing (not
1818 in the container), :exc:`KeyError` should be raised.
1819
1820 .. note::
1821
1822 :keyword:`for` loops expect that an :exc:`IndexError` will be raised for illegal
1823 indexes to allow proper detection of the end of the sequence.
1824
1825
1826.. method:: object.__setitem__(self, key, value)
1827
1828 Called to implement assignment to ``self[key]``. Same note as for
1829 :meth:`__getitem__`. This should only be implemented for mappings if the
1830 objects support changes to the values for keys, or if new keys can be added, or
1831 for sequences if elements can be replaced. The same exceptions should be raised
1832 for improper *key* values as for the :meth:`__getitem__` method.
1833
1834
1835.. method:: object.__delitem__(self, key)
1836
1837 Called to implement deletion of ``self[key]``. Same note as for
1838 :meth:`__getitem__`. This should only be implemented for mappings if the
1839 objects support removal of keys, or for sequences if elements can be removed
1840 from the sequence. The same exceptions should be raised for improper *key*
1841 values as for the :meth:`__getitem__` method.
1842
1843
1844.. method:: object.__iter__(self)
1845
1846 This method is called when an iterator is required for a container. This method
1847 should return a new iterator object that can iterate over all the objects in the
1848 container. For mappings, it should iterate over the keys of the container, and
1849 should also be made available as the method :meth:`iterkeys`.
1850
1851 Iterator objects also need to implement this method; they are required to return
1852 themselves. For more information on iterator objects, see :ref:`typeiter`.
1853
Georg Brandl81de0d22008-01-06 16:17:56 +00001854
1855.. method:: object.__reversed__(self)
1856
1857 Called (if present) by the :func:`reversed` builtin to implement
1858 reverse iteration. It should return a new iterator object that iterates
1859 over all the objects in the container in reverse order.
1860
1861 If the :meth:`__reversed__` method is not provided, the
1862 :func:`reversed` builtin will fall back to using the sequence protocol
1863 (:meth:`__len__` and :meth:`__getitem__`). Objects should normally
1864 only provide :meth:`__reversed__` if they do not support the sequence
1865 protocol and an efficient implementation of reverse iteration is possible.
1866
1867 .. versionadded:: 2.6
1868
1869
Georg Brandl8ec7f652007-08-15 14:28:01 +00001870The membership test operators (:keyword:`in` and :keyword:`not in`) are normally
1871implemented as an iteration through a sequence. However, container objects can
1872supply the following special method with a more efficient implementation, which
1873also does not require the object be a sequence.
1874
1875
1876.. method:: object.__contains__(self, item)
1877
1878 Called to implement membership test operators. Should return true if *item* is
1879 in *self*, false otherwise. For mapping objects, this should consider the keys
1880 of the mapping rather than the values or the key-item pairs.
1881
1882
1883.. _sequence-methods:
1884
1885Additional methods for emulation of sequence types
1886--------------------------------------------------
1887
1888The following optional methods can be defined to further emulate sequence
1889objects. Immutable sequences methods should at most only define
1890:meth:`__getslice__`; mutable sequences might define all three methods.
1891
1892
1893.. method:: object.__getslice__(self, i, j)
1894
1895 .. deprecated:: 2.0
1896 Support slice objects as parameters to the :meth:`__getitem__` method.
Georg Brandl8d9e8452007-08-23 20:35:00 +00001897 (However, built-in types in CPython currently still implement
1898 :meth:`__getslice__`. Therefore, you have to override it in derived
1899 classes when implementing slicing.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001900
1901 Called to implement evaluation of ``self[i:j]``. The returned object should be
1902 of the same type as *self*. Note that missing *i* or *j* in the slice
1903 expression are replaced by zero or ``sys.maxint``, respectively. If negative
1904 indexes are used in the slice, the length of the sequence is added to that
1905 index. If the instance does not implement the :meth:`__len__` method, an
1906 :exc:`AttributeError` is raised. No guarantee is made that indexes adjusted this
1907 way are not still negative. Indexes which are greater than the length of the
1908 sequence are not modified. If no :meth:`__getslice__` is found, a slice object
1909 is created instead, and passed to :meth:`__getitem__` instead.
1910
1911
1912.. method:: object.__setslice__(self, i, j, sequence)
1913
1914 Called to implement assignment to ``self[i:j]``. Same notes for *i* and *j* as
1915 for :meth:`__getslice__`.
1916
1917 This method is deprecated. If no :meth:`__setslice__` is found, or for extended
1918 slicing of the form ``self[i:j:k]``, a slice object is created, and passed to
1919 :meth:`__setitem__`, instead of :meth:`__setslice__` being called.
1920
1921
1922.. method:: object.__delslice__(self, i, j)
1923
1924 Called to implement deletion of ``self[i:j]``. Same notes for *i* and *j* as for
1925 :meth:`__getslice__`. This method is deprecated. If no :meth:`__delslice__` is
1926 found, or for extended slicing of the form ``self[i:j:k]``, a slice object is
1927 created, and passed to :meth:`__delitem__`, instead of :meth:`__delslice__`
1928 being called.
1929
1930Notice that these methods are only invoked when a single slice with a single
1931colon is used, and the slice method is available. For slice operations
1932involving extended slice notation, or in absence of the slice methods,
1933:meth:`__getitem__`, :meth:`__setitem__` or :meth:`__delitem__` is called with a
1934slice object as argument.
1935
1936The following example demonstrate how to make your program or module compatible
1937with earlier versions of Python (assuming that methods :meth:`__getitem__`,
1938:meth:`__setitem__` and :meth:`__delitem__` support slice objects as
1939arguments)::
1940
1941 class MyClass:
1942 ...
1943 def __getitem__(self, index):
1944 ...
1945 def __setitem__(self, index, value):
1946 ...
1947 def __delitem__(self, index):
1948 ...
1949
1950 if sys.version_info < (2, 0):
1951 # They won't be defined if version is at least 2.0 final
1952
1953 def __getslice__(self, i, j):
1954 return self[max(0, i):max(0, j):]
1955 def __setslice__(self, i, j, seq):
1956 self[max(0, i):max(0, j):] = seq
1957 def __delslice__(self, i, j):
1958 del self[max(0, i):max(0, j):]
1959 ...
1960
1961Note the calls to :func:`max`; these are necessary because of the handling of
1962negative indices before the :meth:`__\*slice__` methods are called. When
1963negative indexes are used, the :meth:`__\*item__` methods receive them as
1964provided, but the :meth:`__\*slice__` methods get a "cooked" form of the index
1965values. For each negative index value, the length of the sequence is added to
1966the index before calling the method (which may still result in a negative
1967index); this is the customary handling of negative indexes by the built-in
1968sequence types, and the :meth:`__\*item__` methods are expected to do this as
1969well. However, since they should already be doing that, negative indexes cannot
1970be passed in; they must be constrained to the bounds of the sequence before
1971being passed to the :meth:`__\*item__` methods. Calling ``max(0, i)``
1972conveniently returns the proper value.
1973
1974
1975.. _numeric-types:
1976
1977Emulating numeric types
1978-----------------------
1979
1980The following methods can be defined to emulate numeric objects. Methods
1981corresponding to operations that are not supported by the particular kind of
1982number implemented (e.g., bitwise operations for non-integral numbers) should be
1983left undefined.
1984
1985
1986.. method:: object.__add__(self, other)
1987 object.__sub__(self, other)
1988 object.__mul__(self, other)
1989 object.__floordiv__(self, other)
1990 object.__mod__(self, other)
1991 object.__divmod__(self, other)
1992 object.__pow__(self, other[, modulo])
1993 object.__lshift__(self, other)
1994 object.__rshift__(self, other)
1995 object.__and__(self, other)
1996 object.__xor__(self, other)
1997 object.__or__(self, other)
1998
1999 .. index::
2000 builtin: divmod
2001 builtin: pow
2002 builtin: pow
2003
2004 These methods are called to implement the binary arithmetic operations (``+``,
2005 ``-``, ``*``, ``//``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``,
2006 ``>>``, ``&``, ``^``, ``|``). For instance, to evaluate the expression
Brett Cannon93298462008-08-14 05:55:18 +00002007 ``x + y``, where *x* is an instance of a class that has an :meth:`__add__`
Georg Brandl8ec7f652007-08-15 14:28:01 +00002008 method, ``x.__add__(y)`` is called. The :meth:`__divmod__` method should be the
2009 equivalent to using :meth:`__floordiv__` and :meth:`__mod__`; it should not be
2010 related to :meth:`__truediv__` (described below). Note that :meth:`__pow__`
2011 should be defined to accept an optional third argument if the ternary version of
2012 the built-in :func:`pow` function is to be supported.
2013
2014 If one of those methods does not support the operation with the supplied
2015 arguments, it should return ``NotImplemented``.
2016
2017
2018.. method:: object.__div__(self, other)
2019 object.__truediv__(self, other)
2020
2021 The division operator (``/``) is implemented by these methods. The
2022 :meth:`__truediv__` method is used when ``__future__.division`` is in effect,
2023 otherwise :meth:`__div__` is used. If only one of these two methods is defined,
2024 the object will not support division in the alternate context; :exc:`TypeError`
2025 will be raised instead.
2026
2027
2028.. method:: object.__radd__(self, other)
2029 object.__rsub__(self, other)
2030 object.__rmul__(self, other)
2031 object.__rdiv__(self, other)
2032 object.__rtruediv__(self, other)
2033 object.__rfloordiv__(self, other)
2034 object.__rmod__(self, other)
2035 object.__rdivmod__(self, other)
2036 object.__rpow__(self, other)
2037 object.__rlshift__(self, other)
2038 object.__rrshift__(self, other)
2039 object.__rand__(self, other)
2040 object.__rxor__(self, other)
2041 object.__ror__(self, other)
2042
2043 .. index::
2044 builtin: divmod
2045 builtin: pow
2046
2047 These methods are called to implement the binary arithmetic operations (``+``,
2048 ``-``, ``*``, ``/``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``, ``>>``,
2049 ``&``, ``^``, ``|``) with reflected (swapped) operands. These functions are
2050 only called if the left operand does not support the corresponding operation and
2051 the operands are of different types. [#]_ For instance, to evaluate the
Brett Cannon93298462008-08-14 05:55:18 +00002052 expression ``x - y``, where *y* is an instance of a class that has an
Georg Brandl8ec7f652007-08-15 14:28:01 +00002053 :meth:`__rsub__` method, ``y.__rsub__(x)`` is called if ``x.__sub__(y)`` returns
2054 *NotImplemented*.
2055
2056 .. index:: builtin: pow
2057
2058 Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the
2059 coercion rules would become too complicated).
2060
2061 .. note::
2062
2063 If the right operand's type is a subclass of the left operand's type and that
2064 subclass provides the reflected method for the operation, this method will be
2065 called before the left operand's non-reflected method. This behavior allows
2066 subclasses to override their ancestors' operations.
2067
2068
2069.. method:: object.__iadd__(self, other)
2070 object.__isub__(self, other)
2071 object.__imul__(self, other)
2072 object.__idiv__(self, other)
2073 object.__itruediv__(self, other)
2074 object.__ifloordiv__(self, other)
2075 object.__imod__(self, other)
2076 object.__ipow__(self, other[, modulo])
2077 object.__ilshift__(self, other)
2078 object.__irshift__(self, other)
2079 object.__iand__(self, other)
2080 object.__ixor__(self, other)
2081 object.__ior__(self, other)
2082
Georg Brandlec7d3902009-02-23 10:41:11 +00002083 These methods are called to implement the augmented arithmetic assignments
Georg Brandl8ec7f652007-08-15 14:28:01 +00002084 (``+=``, ``-=``, ``*=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, ``>>=``,
2085 ``&=``, ``^=``, ``|=``). These methods should attempt to do the operation
2086 in-place (modifying *self*) and return the result (which could be, but does
2087 not have to be, *self*). If a specific method is not defined, the augmented
Georg Brandlec7d3902009-02-23 10:41:11 +00002088 assignment falls back to the normal methods. For instance, to execute the
2089 statement ``x += y``, where *x* is an instance of a class that has an
Georg Brandl8ec7f652007-08-15 14:28:01 +00002090 :meth:`__iadd__` method, ``x.__iadd__(y)`` is called. If *x* is an instance
2091 of a class that does not define a :meth:`__iadd__` method, ``x.__add__(y)``
Brett Cannon93298462008-08-14 05:55:18 +00002092 and ``y.__radd__(x)`` are considered, as with the evaluation of ``x + y``.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002093
2094
2095.. method:: object.__neg__(self)
2096 object.__pos__(self)
2097 object.__abs__(self)
2098 object.__invert__(self)
2099
2100 .. index:: builtin: abs
2101
2102 Called to implement the unary arithmetic operations (``-``, ``+``, :func:`abs`
2103 and ``~``).
2104
2105
2106.. method:: object.__complex__(self)
2107 object.__int__(self)
2108 object.__long__(self)
2109 object.__float__(self)
2110
2111 .. index::
2112 builtin: complex
2113 builtin: int
2114 builtin: long
2115 builtin: float
2116
2117 Called to implement the built-in functions :func:`complex`, :func:`int`,
2118 :func:`long`, and :func:`float`. Should return a value of the appropriate type.
2119
2120
2121.. method:: object.__oct__(self)
2122 object.__hex__(self)
2123
2124 .. index::
2125 builtin: oct
2126 builtin: hex
2127
2128 Called to implement the built-in functions :func:`oct` and :func:`hex`. Should
2129 return a string value.
2130
2131
2132.. method:: object.__index__(self)
2133
2134 Called to implement :func:`operator.index`. Also called whenever Python needs
2135 an integer object (such as in slicing). Must return an integer (int or long).
2136
2137 .. versionadded:: 2.5
2138
2139
2140.. method:: object.__coerce__(self, other)
2141
2142 Called to implement "mixed-mode" numeric arithmetic. Should either return a
2143 2-tuple containing *self* and *other* converted to a common numeric type, or
2144 ``None`` if conversion is impossible. When the common type would be the type of
2145 ``other``, it is sufficient to return ``None``, since the interpreter will also
2146 ask the other object to attempt a coercion (but sometimes, if the implementation
2147 of the other type cannot be changed, it is useful to do the conversion to the
2148 other type here). A return value of ``NotImplemented`` is equivalent to
2149 returning ``None``.
2150
2151
2152.. _coercion-rules:
2153
2154Coercion rules
2155--------------
2156
2157This section used to document the rules for coercion. As the language has
2158evolved, the coercion rules have become hard to document precisely; documenting
2159what one version of one particular implementation does is undesirable. Instead,
2160here are some informal guidelines regarding coercion. In Python 3.0, coercion
2161will not be supported.
2162
2163*
2164
2165 If the left operand of a % operator is a string or Unicode object, no coercion
2166 takes place and the string formatting operation is invoked instead.
2167
2168*
2169
2170 It is no longer recommended to define a coercion operation. Mixed-mode
2171 operations on types that don't define coercion pass the original arguments to
2172 the operation.
2173
2174*
2175
2176 New-style classes (those derived from :class:`object`) never invoke the
2177 :meth:`__coerce__` method in response to a binary operator; the only time
2178 :meth:`__coerce__` is invoked is when the built-in function :func:`coerce` is
2179 called.
2180
2181*
2182
2183 For most intents and purposes, an operator that returns ``NotImplemented`` is
2184 treated the same as one that is not implemented at all.
2185
2186*
2187
2188 Below, :meth:`__op__` and :meth:`__rop__` are used to signify the generic method
2189 names corresponding to an operator; :meth:`__iop__` is used for the
2190 corresponding in-place operator. For example, for the operator '``+``',
2191 :meth:`__add__` and :meth:`__radd__` are used for the left and right variant of
2192 the binary operator, and :meth:`__iadd__` for the in-place variant.
2193
2194*
2195
2196 For objects *x* and *y*, first ``x.__op__(y)`` is tried. If this is not
2197 implemented or returns ``NotImplemented``, ``y.__rop__(x)`` is tried. If this
2198 is also not implemented or returns ``NotImplemented``, a :exc:`TypeError`
2199 exception is raised. But see the following exception:
2200
2201*
2202
2203 Exception to the previous item: if the left operand is an instance of a built-in
2204 type or a new-style class, and the right operand is an instance of a proper
2205 subclass of that type or class and overrides the base's :meth:`__rop__` method,
2206 the right operand's :meth:`__rop__` method is tried *before* the left operand's
2207 :meth:`__op__` method.
2208
2209 This is done so that a subclass can completely override binary operators.
2210 Otherwise, the left operand's :meth:`__op__` method would always accept the
2211 right operand: when an instance of a given class is expected, an instance of a
2212 subclass of that class is always acceptable.
2213
2214*
2215
2216 When either operand type defines a coercion, this coercion is called before that
2217 type's :meth:`__op__` or :meth:`__rop__` method is called, but no sooner. If
2218 the coercion returns an object of a different type for the operand whose
2219 coercion is invoked, part of the process is redone using the new object.
2220
2221*
2222
2223 When an in-place operator (like '``+=``') is used, if the left operand
2224 implements :meth:`__iop__`, it is invoked without any coercion. When the
2225 operation falls back to :meth:`__op__` and/or :meth:`__rop__`, the normal
2226 coercion rules apply.
2227
2228*
2229
Brett Cannon93298462008-08-14 05:55:18 +00002230 In ``x + y``, if *x* is a sequence that implements sequence concatenation,
Georg Brandl8ec7f652007-08-15 14:28:01 +00002231 sequence concatenation is invoked.
2232
2233*
2234
Brett Cannon93298462008-08-14 05:55:18 +00002235 In ``x * y``, if one operator is a sequence that implements sequence
Georg Brandl8ec7f652007-08-15 14:28:01 +00002236 repetition, and the other is an integer (:class:`int` or :class:`long`),
2237 sequence repetition is invoked.
2238
2239*
2240
2241 Rich comparisons (implemented by methods :meth:`__eq__` and so on) never use
2242 coercion. Three-way comparison (implemented by :meth:`__cmp__`) does use
2243 coercion under the same conditions as other binary operations use it.
2244
2245*
2246
2247 In the current implementation, the built-in numeric types :class:`int`,
2248 :class:`long` and :class:`float` do not use coercion; the type :class:`complex`
Georg Brandlec7d3902009-02-23 10:41:11 +00002249 however does use coercion for binary operators and rich comparisons, despite
2250 the above rules. The difference can become apparent when subclassing these
Georg Brandl8ec7f652007-08-15 14:28:01 +00002251 types. Over time, the type :class:`complex` may be fixed to avoid coercion.
2252 All these types implement a :meth:`__coerce__` method, for use by the built-in
2253 :func:`coerce` function.
2254
2255
2256.. _context-managers:
2257
2258With Statement Context Managers
2259-------------------------------
2260
2261.. versionadded:: 2.5
2262
2263A :dfn:`context manager` is an object that defines the runtime context to be
2264established when executing a :keyword:`with` statement. The context manager
2265handles the entry into, and the exit from, the desired runtime context for the
2266execution of the block of code. Context managers are normally invoked using the
2267:keyword:`with` statement (described in section :ref:`with`), but can also be
2268used by directly invoking their methods.
2269
2270.. index::
2271 statement: with
2272 single: context manager
2273
2274Typical uses of context managers include saving and restoring various kinds of
2275global state, locking and unlocking resources, closing opened files, etc.
2276
2277For more information on context managers, see :ref:`typecontextmanager`.
2278
2279
2280.. method:: object.__enter__(self)
2281
2282 Enter the runtime context related to this object. The :keyword:`with` statement
2283 will bind this method's return value to the target(s) specified in the
2284 :keyword:`as` clause of the statement, if any.
2285
2286
2287.. method:: object.__exit__(self, exc_type, exc_value, traceback)
2288
2289 Exit the runtime context related to this object. The parameters describe the
2290 exception that caused the context to be exited. If the context was exited
2291 without an exception, all three arguments will be :const:`None`.
2292
2293 If an exception is supplied, and the method wishes to suppress the exception
2294 (i.e., prevent it from being propagated), it should return a true value.
2295 Otherwise, the exception will be processed normally upon exit from this method.
2296
2297 Note that :meth:`__exit__` methods should not reraise the passed-in exception;
2298 this is the caller's responsibility.
2299
2300
2301.. seealso::
2302
2303 :pep:`0343` - The "with" statement
2304 The specification, background, and examples for the Python :keyword:`with`
2305 statement.
2306
Nick Coghlana5107482008-08-04 12:40:59 +00002307
2308.. _old-style-special-lookup:
2309
2310Special method lookup for old-style classes
2311-------------------------------------------
2312
2313For old-style classes, special methods are always looked up in exactly the
2314same way as any other method or attribute. This is the case regardless of
2315whether the method is being looked up explicitly as in ``x.__getitem__(i)``
2316or implicitly as in ``x[i]``.
2317
2318This behaviour means that special methods may exhibit different behaviour
2319for different instances of a single old-style class if the appropriate
2320special attributes are set differently::
2321
2322 >>> class C:
2323 ... pass
2324 ...
2325 >>> c1 = C()
2326 >>> c2 = C()
2327 >>> c1.__len__ = lambda: 5
2328 >>> c2.__len__ = lambda: 9
2329 >>> len(c1)
2330 5
2331 >>> len(c2)
2332 9
2333
2334
2335.. _new-style-special-lookup:
2336
2337Special method lookup for new-style classes
2338-------------------------------------------
2339
2340For new-style classes, implicit invocations of special methods are only guaranteed
2341to work correctly if defined on an object's type, not in the object's instance
2342dictionary. That behaviour is the reason why the following code raises an
2343exception (unlike the equivalent example with old-style classes)::
2344
2345 >>> class C(object):
2346 ... pass
2347 ...
2348 >>> c = C()
2349 >>> c.__len__ = lambda: 5
2350 >>> len(c)
2351 Traceback (most recent call last):
2352 File "<stdin>", line 1, in <module>
2353 TypeError: object of type 'C' has no len()
2354
2355The rationale behind this behaviour lies with a number of special methods such
2356as :meth:`__hash__` and :meth:`__repr__` that are implemented by all objects,
2357including type objects. If the implicit lookup of these methods used the
2358conventional lookup process, they would fail when invoked on the type object
2359itself::
2360
2361 >>> 1 .__hash__() == hash(1)
2362 True
2363 >>> int.__hash__() == hash(int)
2364 Traceback (most recent call last):
2365 File "<stdin>", line 1, in <module>
2366 TypeError: descriptor '__hash__' of 'int' object needs an argument
2367
2368Incorrectly attempting to invoke an unbound method of a class in this way is
2369sometimes referred to as 'metaclass confusion', and is avoided by bypassing
2370the instance when looking up special methods::
2371
2372 >>> type(1).__hash__(1) == hash(1)
2373 True
2374 >>> type(int).__hash__(int) == hash(int)
2375 True
2376
2377In addition to bypassing any instance attributes in the interest of
Georg Brandlf3a0b862008-12-07 14:47:12 +00002378correctness, implicit special method lookup generally also bypasses the
Nick Coghlana5107482008-08-04 12:40:59 +00002379:meth:`__getattribute__` method even of the object's metaclass::
2380
2381 >>> class Meta(type):
2382 ... def __getattribute__(*args):
2383 ... print "Metaclass getattribute invoked"
2384 ... return type.__getattribute__(*args)
2385 ...
2386 >>> class C(object):
2387 ... __metaclass__ = Meta
2388 ... def __len__(self):
2389 ... return 10
2390 ... def __getattribute__(*args):
2391 ... print "Class getattribute invoked"
2392 ... return object.__getattribute__(*args)
2393 ...
2394 >>> c = C()
2395 >>> c.__len__() # Explicit lookup via instance
2396 Class getattribute invoked
2397 10
2398 >>> type(c).__len__(c) # Explicit lookup via type
2399 Metaclass getattribute invoked
2400 10
2401 >>> len(c) # Implicit lookup
2402 10
2403
2404Bypassing the :meth:`__getattribute__` machinery in this fashion
2405provides significant scope for speed optimisations within the
2406interpreter, at the cost of some flexibility in the handling of
2407special methods (the special method *must* be set on the class
2408object itself in order to be consistently invoked by the interpreter).
2409
2410
Georg Brandl8ec7f652007-08-15 14:28:01 +00002411.. rubric:: Footnotes
2412
Nick Coghlana5107482008-08-04 12:40:59 +00002413.. [#] It *is* possible in some cases to change an object's type, under certain
2414 controlled conditions. It generally isn't a good idea though, since it can
2415 lead to some very strange behaviour if it is handled incorrectly.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002416
Georg Brandl37614222007-08-23 21:42:54 +00002417.. [#] A descriptor can define any combination of :meth:`__get__`,
2418 :meth:`__set__` and :meth:`__delete__`. If it does not define :meth:`__get__`,
2419 then accessing the attribute even on an instance will return the descriptor
2420 object itself. If the descriptor defines :meth:`__set__` and/or
2421 :meth:`__delete__`, it is a data descriptor; if it defines neither, it is a
2422 non-data descriptor.
2423
Georg Brandl8ec7f652007-08-15 14:28:01 +00002424.. [#] For operands of the same type, it is assumed that if the non-reflected method
2425 (such as :meth:`__add__`) fails the operation is not supported, which is why the
2426 reflected method is not called.
2427