blob: c13e80286cc3dcc2c6e5d9b0803614c3f72a0999 [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
1417 Called to implement truth value testing, and the built-in operation ``bool()``;
1418 should return ``False`` or ``True``, or their integer equivalents ``0`` or
1419 ``1``. When this method is not defined, :meth:`__len__` is called, if it is
1420 defined (see below). If a class defines neither :meth:`__len__` nor
1421 :meth:`__nonzero__`, all its instances are considered true.
1422
1423
1424.. method:: object.__unicode__(self)
1425
1426 .. index:: builtin: unicode
1427
1428 Called to implement :func:`unicode` builtin; should return a Unicode object.
1429 When this method is not defined, string conversion is attempted, and the result
1430 of string conversion is converted to Unicode using the system default encoding.
1431
1432
1433.. _attribute-access:
1434
1435Customizing attribute access
1436----------------------------
1437
1438The following methods can be defined to customize the meaning of attribute
1439access (use of, assignment to, or deletion of ``x.name``) for class instances.
1440
1441
1442.. method:: object.__getattr__(self, name)
1443
1444 Called when an attribute lookup has not found the attribute in the usual places
1445 (i.e. it is not an instance attribute nor is it found in the class tree for
1446 ``self``). ``name`` is the attribute name. This method should return the
1447 (computed) attribute value or raise an :exc:`AttributeError` exception.
1448
1449 .. index:: single: __setattr__() (object method)
1450
1451 Note that if the attribute is found through the normal mechanism,
1452 :meth:`__getattr__` is not called. (This is an intentional asymmetry between
1453 :meth:`__getattr__` and :meth:`__setattr__`.) This is done both for efficiency
Georg Brandlc1768142008-08-30 09:52:44 +00001454 reasons and because otherwise :meth:`__getattr__` would have no way to access
Georg Brandl8ec7f652007-08-15 14:28:01 +00001455 other attributes of the instance. Note that at least for instance variables,
1456 you can fake total control by not inserting any values in the instance attribute
1457 dictionary (but instead inserting them in another object). See the
1458 :meth:`__getattribute__` method below for a way to actually get total control in
1459 new-style classes.
1460
1461
1462.. method:: object.__setattr__(self, name, value)
1463
1464 Called when an attribute assignment is attempted. This is called instead of the
1465 normal mechanism (i.e. store the value in the instance dictionary). *name* is
1466 the attribute name, *value* is the value to be assigned to it.
1467
1468 .. index:: single: __dict__ (instance attribute)
1469
1470 If :meth:`__setattr__` wants to assign to an instance attribute, it should not
1471 simply execute ``self.name = value`` --- this would cause a recursive call to
1472 itself. Instead, it should insert the value in the dictionary of instance
1473 attributes, e.g., ``self.__dict__[name] = value``. For new-style classes,
1474 rather than accessing the instance dictionary, it should call the base class
1475 method with the same name, for example, ``object.__setattr__(self, name,
1476 value)``.
1477
1478
1479.. method:: object.__delattr__(self, name)
1480
1481 Like :meth:`__setattr__` but for attribute deletion instead of assignment. This
1482 should only be implemented if ``del obj.name`` is meaningful for the object.
1483
1484
1485.. _new-style-attribute-access:
1486
1487More attribute access for new-style classes
1488^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1489
1490The following methods only apply to new-style classes.
1491
1492
1493.. method:: object.__getattribute__(self, name)
1494
1495 Called unconditionally to implement attribute accesses for instances of the
1496 class. If the class also defines :meth:`__getattr__`, the latter will not be
1497 called unless :meth:`__getattribute__` either calls it explicitly or raises an
1498 :exc:`AttributeError`. This method should return the (computed) attribute value
1499 or raise an :exc:`AttributeError` exception. In order to avoid infinite
1500 recursion in this method, its implementation should always call the base class
1501 method with the same name to access any attributes it needs, for example,
1502 ``object.__getattribute__(self, name)``.
1503
Nick Coghlana5107482008-08-04 12:40:59 +00001504 .. note::
1505
1506 This method may still be bypassed when looking up special methods as the
1507 result of implicit invocation via language syntax or builtin functions.
1508 See :ref:`new-style-special-lookup`.
1509
Georg Brandl8ec7f652007-08-15 14:28:01 +00001510
1511.. _descriptors:
1512
1513Implementing Descriptors
1514^^^^^^^^^^^^^^^^^^^^^^^^
1515
1516The following methods only apply when an instance of the class containing the
1517method (a so-called *descriptor* class) appears in the class dictionary of
1518another new-style class, known as the *owner* class. In the examples below, "the
1519attribute" refers to the attribute whose name is the key of the property in the
1520owner class' ``__dict__``. Descriptors can only be implemented as new-style
1521classes themselves.
1522
1523
1524.. method:: object.__get__(self, instance, owner)
1525
1526 Called to get the attribute of the owner class (class attribute access) or of an
1527 instance of that class (instance attribute access). *owner* is always the owner
1528 class, while *instance* is the instance that the attribute was accessed through,
1529 or ``None`` when the attribute is accessed through the *owner*. This method
1530 should return the (computed) attribute value or raise an :exc:`AttributeError`
1531 exception.
1532
1533
1534.. method:: object.__set__(self, instance, value)
1535
1536 Called to set the attribute on an instance *instance* of the owner class to a
1537 new value, *value*.
1538
1539
1540.. method:: object.__delete__(self, instance)
1541
1542 Called to delete the attribute on an instance *instance* of the owner class.
1543
1544
1545.. _descriptor-invocation:
1546
1547Invoking Descriptors
1548^^^^^^^^^^^^^^^^^^^^
1549
1550In general, a descriptor is an object attribute with "binding behavior", one
1551whose attribute access has been overridden by methods in the descriptor
1552protocol: :meth:`__get__`, :meth:`__set__`, and :meth:`__delete__`. If any of
1553those methods are defined for an object, it is said to be a descriptor.
1554
1555The default behavior for attribute access is to get, set, or delete the
1556attribute from an object's dictionary. For instance, ``a.x`` has a lookup chain
1557starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and
1558continuing through the base classes of ``type(a)`` excluding metaclasses.
1559
1560However, if the looked-up value is an object defining one of the descriptor
1561methods, then Python may override the default behavior and invoke the descriptor
1562method instead. Where this occurs in the precedence chain depends on which
1563descriptor methods were defined and how they were called. Note that descriptors
1564are only invoked for new style objects or classes (ones that subclass
1565:class:`object()` or :class:`type()`).
1566
1567The starting point for descriptor invocation is a binding, ``a.x``. How the
1568arguments are assembled depends on ``a``:
1569
1570Direct Call
1571 The simplest and least common call is when user code directly invokes a
1572 descriptor method: ``x.__get__(a)``.
1573
1574Instance Binding
1575 If binding to a new-style object instance, ``a.x`` is transformed into the call:
1576 ``type(a).__dict__['x'].__get__(a, type(a))``.
1577
1578Class Binding
1579 If binding to a new-style class, ``A.x`` is transformed into the call:
1580 ``A.__dict__['x'].__get__(None, A)``.
1581
1582Super Binding
1583 If ``a`` is an instance of :class:`super`, then the binding ``super(B,
1584 obj).m()`` searches ``obj.__class__.__mro__`` for the base class ``A``
1585 immediately preceding ``B`` and then invokes the descriptor with the call:
1586 ``A.__dict__['m'].__get__(obj, A)``.
1587
1588For instance bindings, the precedence of descriptor invocation depends on the
Georg Brandl37614222007-08-23 21:42:54 +00001589which descriptor methods are defined. Normally, data descriptors define both
1590:meth:`__get__` and :meth:`__set__`, while non-data descriptors have just the
Georg Brandl8ec7f652007-08-15 14:28:01 +00001591:meth:`__get__` method. Data descriptors always override a redefinition in an
1592instance dictionary. In contrast, non-data descriptors can be overridden by
Georg Brandl37614222007-08-23 21:42:54 +00001593instances. [#]_
Georg Brandl8ec7f652007-08-15 14:28:01 +00001594
1595Python methods (including :func:`staticmethod` and :func:`classmethod`) are
1596implemented as non-data descriptors. Accordingly, instances can redefine and
1597override methods. This allows individual instances to acquire behaviors that
1598differ from other instances of the same class.
1599
1600The :func:`property` function is implemented as a data descriptor. Accordingly,
1601instances cannot override the behavior of a property.
1602
1603
1604.. _slots:
1605
1606__slots__
1607^^^^^^^^^
1608
1609By default, instances of both old and new-style classes have a dictionary for
1610attribute storage. This wastes space for objects having very few instance
1611variables. The space consumption can become acute when creating large numbers
1612of instances.
1613
1614The default can be overridden by defining *__slots__* in a new-style class
1615definition. The *__slots__* declaration takes a sequence of instance variables
1616and reserves just enough space in each instance to hold a value for each
1617variable. Space is saved because *__dict__* is not created for each instance.
1618
1619
1620.. data:: __slots__
1621
1622 This class variable can be assigned a string, iterable, or sequence of strings
1623 with variable names used by instances. If defined in a new-style class,
1624 *__slots__* reserves space for the declared variables and prevents the automatic
1625 creation of *__dict__* and *__weakref__* for each instance.
1626
1627 .. versionadded:: 2.2
1628
1629Notes on using *__slots__*
1630
Georg Brandl3de1e692008-07-19 13:09:42 +00001631* When inheriting from a class without *__slots__*, the *__dict__* attribute of
1632 that class will always be accessible, so a *__slots__* definition in the
1633 subclass is meaningless.
1634
Georg Brandl8ec7f652007-08-15 14:28:01 +00001635* Without a *__dict__* variable, instances cannot be assigned new variables not
1636 listed in the *__slots__* definition. Attempts to assign to an unlisted
1637 variable name raises :exc:`AttributeError`. If dynamic assignment of new
1638 variables is desired, then add ``'__dict__'`` to the sequence of strings in the
1639 *__slots__* declaration.
1640
1641 .. versionchanged:: 2.3
1642 Previously, adding ``'__dict__'`` to the *__slots__* declaration would not
1643 enable the assignment of new attributes not specifically listed in the sequence
1644 of instance variable names.
1645
1646* Without a *__weakref__* variable for each instance, classes defining
1647 *__slots__* do not support weak references to its instances. If weak reference
1648 support is needed, then add ``'__weakref__'`` to the sequence of strings in the
1649 *__slots__* declaration.
1650
1651 .. versionchanged:: 2.3
1652 Previously, adding ``'__weakref__'`` to the *__slots__* declaration would not
1653 enable support for weak references.
1654
1655* *__slots__* are implemented at the class level by creating descriptors
1656 (:ref:`descriptors`) for each variable name. As a result, class attributes
1657 cannot be used to set default values for instance variables defined by
1658 *__slots__*; otherwise, the class attribute would overwrite the descriptor
1659 assignment.
1660
1661* If a class defines a slot also defined in a base class, the instance variable
1662 defined by the base class slot is inaccessible (except by retrieving its
1663 descriptor directly from the base class). This renders the meaning of the
1664 program undefined. In the future, a check may be added to prevent this.
1665
1666* The action of a *__slots__* declaration is limited to the class where it is
1667 defined. As a result, subclasses will have a *__dict__* unless they also define
1668 *__slots__*.
1669
Georg Brandl4aef7032008-11-07 08:56:27 +00001670* Nonempty *__slots__* does not work for classes derived from "variable-length"
1671 built-in types such as :class:`long`, :class:`str` and :class:`tuple`.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001672
1673* Any non-string iterable may be assigned to *__slots__*. Mappings may also be
1674 used; however, in the future, special meaning may be assigned to the values
1675 corresponding to each key.
1676
1677* *__class__* assignment works only if both classes have the same *__slots__*.
1678
1679 .. versionchanged:: 2.6
1680 Previously, *__class__* assignment raised an error if either new or old class
1681 had *__slots__*.
1682
1683
1684.. _metaclasses:
1685
1686Customizing class creation
1687--------------------------
1688
1689By default, new-style classes are constructed using :func:`type`. A class
1690definition is read into a separate namespace and the value of class name is
1691bound to the result of ``type(name, bases, dict)``.
1692
1693When the class definition is read, if *__metaclass__* is defined then the
Georg Brandl3ccb49a2008-01-07 19:17:10 +00001694callable assigned to it will be called instead of :func:`type`. This allows
Georg Brandl8ec7f652007-08-15 14:28:01 +00001695classes or functions to be written which monitor or alter the class creation
1696process:
1697
1698* Modifying the class dictionary prior to the class being created.
1699
1700* Returning an instance of another class -- essentially performing the role of a
1701 factory function.
1702
Georg Brandl3ccb49a2008-01-07 19:17:10 +00001703These steps will have to be performed in the metaclass's :meth:`__new__` method
1704-- :meth:`type.__new__` can then be called from this method to create a class
1705with different properties. This example adds a new element to the class
1706dictionary before creating the class::
1707
1708 class metacls(type):
1709 def __new__(mcs, name, bases, dict):
1710 dict['foo'] = 'metacls was here'
1711 return type.__new__(mcs, name, bases, dict)
1712
1713You can of course also override other class methods (or add new methods); for
1714example defining a custom :meth:`__call__` method in the metaclass allows custom
1715behavior when the class is called, e.g. not always creating a new instance.
1716
Georg Brandl8ec7f652007-08-15 14:28:01 +00001717
1718.. data:: __metaclass__
1719
1720 This variable can be any callable accepting arguments for ``name``, ``bases``,
1721 and ``dict``. Upon class creation, the callable is used instead of the built-in
1722 :func:`type`.
1723
1724 .. versionadded:: 2.2
1725
1726The appropriate metaclass is determined by the following precedence rules:
1727
1728* If ``dict['__metaclass__']`` exists, it is used.
1729
1730* Otherwise, if there is at least one base class, its metaclass is used (this
1731 looks for a *__class__* attribute first and if not found, uses its type).
1732
1733* Otherwise, if a global variable named __metaclass__ exists, it is used.
1734
1735* Otherwise, the old-style, classic metaclass (types.ClassType) is used.
1736
1737The potential uses for metaclasses are boundless. Some ideas that have been
1738explored including logging, interface checking, automatic delegation, automatic
1739property creation, proxies, frameworks, and automatic resource
1740locking/synchronization.
1741
1742
1743.. _callable-types:
1744
1745Emulating callable objects
1746--------------------------
1747
1748
1749.. method:: object.__call__(self[, args...])
1750
1751 .. index:: pair: call; instance
1752
1753 Called when the instance is "called" as a function; if this method is defined,
1754 ``x(arg1, arg2, ...)`` is a shorthand for ``x.__call__(arg1, arg2, ...)``.
1755
1756
1757.. _sequence-types:
1758
1759Emulating container types
1760-------------------------
1761
1762The following methods can be defined to implement container objects. Containers
1763usually are sequences (such as lists or tuples) or mappings (like dictionaries),
1764but can represent other containers as well. The first set of methods is used
1765either to emulate a sequence or to emulate a mapping; the difference is that for
1766a sequence, the allowable keys should be the integers *k* for which ``0 <= k <
1767N`` where *N* is the length of the sequence, or slice objects, which define a
1768range of items. (For backwards compatibility, the method :meth:`__getslice__`
1769(see below) can also be defined to handle simple, but not extended slices.) It
1770is also recommended that mappings provide the methods :meth:`keys`,
1771:meth:`values`, :meth:`items`, :meth:`has_key`, :meth:`get`, :meth:`clear`,
1772:meth:`setdefault`, :meth:`iterkeys`, :meth:`itervalues`, :meth:`iteritems`,
1773:meth:`pop`, :meth:`popitem`, :meth:`copy`, and :meth:`update` behaving similar
1774to those for Python's standard dictionary objects. The :mod:`UserDict` module
1775provides a :class:`DictMixin` class to help create those methods from a base set
1776of :meth:`__getitem__`, :meth:`__setitem__`, :meth:`__delitem__`, and
1777:meth:`keys`. Mutable sequences should provide methods :meth:`append`,
1778:meth:`count`, :meth:`index`, :meth:`extend`, :meth:`insert`, :meth:`pop`,
1779:meth:`remove`, :meth:`reverse` and :meth:`sort`, like Python standard list
1780objects. Finally, sequence types should implement addition (meaning
1781concatenation) and multiplication (meaning repetition) by defining the methods
1782:meth:`__add__`, :meth:`__radd__`, :meth:`__iadd__`, :meth:`__mul__`,
1783:meth:`__rmul__` and :meth:`__imul__` described below; they should not define
1784:meth:`__coerce__` or other numerical operators. It is recommended that both
1785mappings and sequences implement the :meth:`__contains__` method to allow
1786efficient use of the ``in`` operator; for mappings, ``in`` should be equivalent
1787of :meth:`has_key`; for sequences, it should search through the values. It is
1788further recommended that both mappings and sequences implement the
1789:meth:`__iter__` method to allow efficient iteration through the container; for
1790mappings, :meth:`__iter__` should be the same as :meth:`iterkeys`; for
1791sequences, it should iterate through the values.
1792
1793
1794.. method:: object.__len__(self)
1795
1796 .. index::
1797 builtin: len
1798 single: __nonzero__() (object method)
1799
1800 Called to implement the built-in function :func:`len`. Should return the length
1801 of the object, an integer ``>=`` 0. Also, an object that doesn't define a
1802 :meth:`__nonzero__` method and whose :meth:`__len__` method returns zero is
1803 considered to be false in a Boolean context.
1804
1805
1806.. method:: object.__getitem__(self, key)
1807
1808 .. index:: object: slice
1809
1810 Called to implement evaluation of ``self[key]``. For sequence types, the
1811 accepted keys should be integers and slice objects. Note that the special
1812 interpretation of negative indexes (if the class wishes to emulate a sequence
1813 type) is up to the :meth:`__getitem__` method. If *key* is of an inappropriate
1814 type, :exc:`TypeError` may be raised; if of a value outside the set of indexes
1815 for the sequence (after any special interpretation of negative values),
1816 :exc:`IndexError` should be raised. For mapping types, if *key* is missing (not
1817 in the container), :exc:`KeyError` should be raised.
1818
1819 .. note::
1820
1821 :keyword:`for` loops expect that an :exc:`IndexError` will be raised for illegal
1822 indexes to allow proper detection of the end of the sequence.
1823
1824
1825.. method:: object.__setitem__(self, key, value)
1826
1827 Called to implement assignment to ``self[key]``. Same note as for
1828 :meth:`__getitem__`. This should only be implemented for mappings if the
1829 objects support changes to the values for keys, or if new keys can be added, or
1830 for sequences if elements can be replaced. The same exceptions should be raised
1831 for improper *key* values as for the :meth:`__getitem__` method.
1832
1833
1834.. method:: object.__delitem__(self, key)
1835
1836 Called to implement deletion of ``self[key]``. Same note as for
1837 :meth:`__getitem__`. This should only be implemented for mappings if the
1838 objects support removal of keys, or for sequences if elements can be removed
1839 from the sequence. The same exceptions should be raised for improper *key*
1840 values as for the :meth:`__getitem__` method.
1841
1842
1843.. method:: object.__iter__(self)
1844
1845 This method is called when an iterator is required for a container. This method
1846 should return a new iterator object that can iterate over all the objects in the
1847 container. For mappings, it should iterate over the keys of the container, and
1848 should also be made available as the method :meth:`iterkeys`.
1849
1850 Iterator objects also need to implement this method; they are required to return
1851 themselves. For more information on iterator objects, see :ref:`typeiter`.
1852
Georg Brandl81de0d22008-01-06 16:17:56 +00001853
1854.. method:: object.__reversed__(self)
1855
1856 Called (if present) by the :func:`reversed` builtin to implement
1857 reverse iteration. It should return a new iterator object that iterates
1858 over all the objects in the container in reverse order.
1859
1860 If the :meth:`__reversed__` method is not provided, the
1861 :func:`reversed` builtin will fall back to using the sequence protocol
1862 (:meth:`__len__` and :meth:`__getitem__`). Objects should normally
1863 only provide :meth:`__reversed__` if they do not support the sequence
1864 protocol and an efficient implementation of reverse iteration is possible.
1865
1866 .. versionadded:: 2.6
1867
1868
Georg Brandl8ec7f652007-08-15 14:28:01 +00001869The membership test operators (:keyword:`in` and :keyword:`not in`) are normally
1870implemented as an iteration through a sequence. However, container objects can
1871supply the following special method with a more efficient implementation, which
1872also does not require the object be a sequence.
1873
1874
1875.. method:: object.__contains__(self, item)
1876
1877 Called to implement membership test operators. Should return true if *item* is
1878 in *self*, false otherwise. For mapping objects, this should consider the keys
1879 of the mapping rather than the values or the key-item pairs.
1880
1881
1882.. _sequence-methods:
1883
1884Additional methods for emulation of sequence types
1885--------------------------------------------------
1886
1887The following optional methods can be defined to further emulate sequence
1888objects. Immutable sequences methods should at most only define
1889:meth:`__getslice__`; mutable sequences might define all three methods.
1890
1891
1892.. method:: object.__getslice__(self, i, j)
1893
1894 .. deprecated:: 2.0
1895 Support slice objects as parameters to the :meth:`__getitem__` method.
Georg Brandl8d9e8452007-08-23 20:35:00 +00001896 (However, built-in types in CPython currently still implement
1897 :meth:`__getslice__`. Therefore, you have to override it in derived
1898 classes when implementing slicing.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001899
1900 Called to implement evaluation of ``self[i:j]``. The returned object should be
1901 of the same type as *self*. Note that missing *i* or *j* in the slice
1902 expression are replaced by zero or ``sys.maxint``, respectively. If negative
1903 indexes are used in the slice, the length of the sequence is added to that
1904 index. If the instance does not implement the :meth:`__len__` method, an
1905 :exc:`AttributeError` is raised. No guarantee is made that indexes adjusted this
1906 way are not still negative. Indexes which are greater than the length of the
1907 sequence are not modified. If no :meth:`__getslice__` is found, a slice object
1908 is created instead, and passed to :meth:`__getitem__` instead.
1909
1910
1911.. method:: object.__setslice__(self, i, j, sequence)
1912
1913 Called to implement assignment to ``self[i:j]``. Same notes for *i* and *j* as
1914 for :meth:`__getslice__`.
1915
1916 This method is deprecated. If no :meth:`__setslice__` is found, or for extended
1917 slicing of the form ``self[i:j:k]``, a slice object is created, and passed to
1918 :meth:`__setitem__`, instead of :meth:`__setslice__` being called.
1919
1920
1921.. method:: object.__delslice__(self, i, j)
1922
1923 Called to implement deletion of ``self[i:j]``. Same notes for *i* and *j* as for
1924 :meth:`__getslice__`. This method is deprecated. If no :meth:`__delslice__` is
1925 found, or for extended slicing of the form ``self[i:j:k]``, a slice object is
1926 created, and passed to :meth:`__delitem__`, instead of :meth:`__delslice__`
1927 being called.
1928
1929Notice that these methods are only invoked when a single slice with a single
1930colon is used, and the slice method is available. For slice operations
1931involving extended slice notation, or in absence of the slice methods,
1932:meth:`__getitem__`, :meth:`__setitem__` or :meth:`__delitem__` is called with a
1933slice object as argument.
1934
1935The following example demonstrate how to make your program or module compatible
1936with earlier versions of Python (assuming that methods :meth:`__getitem__`,
1937:meth:`__setitem__` and :meth:`__delitem__` support slice objects as
1938arguments)::
1939
1940 class MyClass:
1941 ...
1942 def __getitem__(self, index):
1943 ...
1944 def __setitem__(self, index, value):
1945 ...
1946 def __delitem__(self, index):
1947 ...
1948
1949 if sys.version_info < (2, 0):
1950 # They won't be defined if version is at least 2.0 final
1951
1952 def __getslice__(self, i, j):
1953 return self[max(0, i):max(0, j):]
1954 def __setslice__(self, i, j, seq):
1955 self[max(0, i):max(0, j):] = seq
1956 def __delslice__(self, i, j):
1957 del self[max(0, i):max(0, j):]
1958 ...
1959
1960Note the calls to :func:`max`; these are necessary because of the handling of
1961negative indices before the :meth:`__\*slice__` methods are called. When
1962negative indexes are used, the :meth:`__\*item__` methods receive them as
1963provided, but the :meth:`__\*slice__` methods get a "cooked" form of the index
1964values. For each negative index value, the length of the sequence is added to
1965the index before calling the method (which may still result in a negative
1966index); this is the customary handling of negative indexes by the built-in
1967sequence types, and the :meth:`__\*item__` methods are expected to do this as
1968well. However, since they should already be doing that, negative indexes cannot
1969be passed in; they must be constrained to the bounds of the sequence before
1970being passed to the :meth:`__\*item__` methods. Calling ``max(0, i)``
1971conveniently returns the proper value.
1972
1973
1974.. _numeric-types:
1975
1976Emulating numeric types
1977-----------------------
1978
1979The following methods can be defined to emulate numeric objects. Methods
1980corresponding to operations that are not supported by the particular kind of
1981number implemented (e.g., bitwise operations for non-integral numbers) should be
1982left undefined.
1983
1984
1985.. method:: object.__add__(self, other)
1986 object.__sub__(self, other)
1987 object.__mul__(self, other)
1988 object.__floordiv__(self, other)
1989 object.__mod__(self, other)
1990 object.__divmod__(self, other)
1991 object.__pow__(self, other[, modulo])
1992 object.__lshift__(self, other)
1993 object.__rshift__(self, other)
1994 object.__and__(self, other)
1995 object.__xor__(self, other)
1996 object.__or__(self, other)
1997
1998 .. index::
1999 builtin: divmod
2000 builtin: pow
2001 builtin: pow
2002
2003 These methods are called to implement the binary arithmetic operations (``+``,
2004 ``-``, ``*``, ``//``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``,
2005 ``>>``, ``&``, ``^``, ``|``). For instance, to evaluate the expression
Brett Cannon93298462008-08-14 05:55:18 +00002006 ``x + y``, where *x* is an instance of a class that has an :meth:`__add__`
Georg Brandl8ec7f652007-08-15 14:28:01 +00002007 method, ``x.__add__(y)`` is called. The :meth:`__divmod__` method should be the
2008 equivalent to using :meth:`__floordiv__` and :meth:`__mod__`; it should not be
2009 related to :meth:`__truediv__` (described below). Note that :meth:`__pow__`
2010 should be defined to accept an optional third argument if the ternary version of
2011 the built-in :func:`pow` function is to be supported.
2012
2013 If one of those methods does not support the operation with the supplied
2014 arguments, it should return ``NotImplemented``.
2015
2016
2017.. method:: object.__div__(self, other)
2018 object.__truediv__(self, other)
2019
2020 The division operator (``/``) is implemented by these methods. The
2021 :meth:`__truediv__` method is used when ``__future__.division`` is in effect,
2022 otherwise :meth:`__div__` is used. If only one of these two methods is defined,
2023 the object will not support division in the alternate context; :exc:`TypeError`
2024 will be raised instead.
2025
2026
2027.. method:: object.__radd__(self, other)
2028 object.__rsub__(self, other)
2029 object.__rmul__(self, other)
2030 object.__rdiv__(self, other)
2031 object.__rtruediv__(self, other)
2032 object.__rfloordiv__(self, other)
2033 object.__rmod__(self, other)
2034 object.__rdivmod__(self, other)
2035 object.__rpow__(self, other)
2036 object.__rlshift__(self, other)
2037 object.__rrshift__(self, other)
2038 object.__rand__(self, other)
2039 object.__rxor__(self, other)
2040 object.__ror__(self, other)
2041
2042 .. index::
2043 builtin: divmod
2044 builtin: pow
2045
2046 These methods are called to implement the binary arithmetic operations (``+``,
2047 ``-``, ``*``, ``/``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``, ``>>``,
2048 ``&``, ``^``, ``|``) with reflected (swapped) operands. These functions are
2049 only called if the left operand does not support the corresponding operation and
2050 the operands are of different types. [#]_ For instance, to evaluate the
Brett Cannon93298462008-08-14 05:55:18 +00002051 expression ``x - y``, where *y* is an instance of a class that has an
Georg Brandl8ec7f652007-08-15 14:28:01 +00002052 :meth:`__rsub__` method, ``y.__rsub__(x)`` is called if ``x.__sub__(y)`` returns
2053 *NotImplemented*.
2054
2055 .. index:: builtin: pow
2056
2057 Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the
2058 coercion rules would become too complicated).
2059
2060 .. note::
2061
2062 If the right operand's type is a subclass of the left operand's type and that
2063 subclass provides the reflected method for the operation, this method will be
2064 called before the left operand's non-reflected method. This behavior allows
2065 subclasses to override their ancestors' operations.
2066
2067
2068.. method:: object.__iadd__(self, other)
2069 object.__isub__(self, other)
2070 object.__imul__(self, other)
2071 object.__idiv__(self, other)
2072 object.__itruediv__(self, other)
2073 object.__ifloordiv__(self, other)
2074 object.__imod__(self, other)
2075 object.__ipow__(self, other[, modulo])
2076 object.__ilshift__(self, other)
2077 object.__irshift__(self, other)
2078 object.__iand__(self, other)
2079 object.__ixor__(self, other)
2080 object.__ior__(self, other)
2081
Georg Brandlec7d3902009-02-23 10:41:11 +00002082 These methods are called to implement the augmented arithmetic assignments
Georg Brandl8ec7f652007-08-15 14:28:01 +00002083 (``+=``, ``-=``, ``*=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, ``>>=``,
2084 ``&=``, ``^=``, ``|=``). These methods should attempt to do the operation
2085 in-place (modifying *self*) and return the result (which could be, but does
2086 not have to be, *self*). If a specific method is not defined, the augmented
Georg Brandlec7d3902009-02-23 10:41:11 +00002087 assignment falls back to the normal methods. For instance, to execute the
2088 statement ``x += y``, where *x* is an instance of a class that has an
Georg Brandl8ec7f652007-08-15 14:28:01 +00002089 :meth:`__iadd__` method, ``x.__iadd__(y)`` is called. If *x* is an instance
2090 of a class that does not define a :meth:`__iadd__` method, ``x.__add__(y)``
Brett Cannon93298462008-08-14 05:55:18 +00002091 and ``y.__radd__(x)`` are considered, as with the evaluation of ``x + y``.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002092
2093
2094.. method:: object.__neg__(self)
2095 object.__pos__(self)
2096 object.__abs__(self)
2097 object.__invert__(self)
2098
2099 .. index:: builtin: abs
2100
2101 Called to implement the unary arithmetic operations (``-``, ``+``, :func:`abs`
2102 and ``~``).
2103
2104
2105.. method:: object.__complex__(self)
2106 object.__int__(self)
2107 object.__long__(self)
2108 object.__float__(self)
2109
2110 .. index::
2111 builtin: complex
2112 builtin: int
2113 builtin: long
2114 builtin: float
2115
2116 Called to implement the built-in functions :func:`complex`, :func:`int`,
2117 :func:`long`, and :func:`float`. Should return a value of the appropriate type.
2118
2119
2120.. method:: object.__oct__(self)
2121 object.__hex__(self)
2122
2123 .. index::
2124 builtin: oct
2125 builtin: hex
2126
2127 Called to implement the built-in functions :func:`oct` and :func:`hex`. Should
2128 return a string value.
2129
2130
2131.. method:: object.__index__(self)
2132
2133 Called to implement :func:`operator.index`. Also called whenever Python needs
2134 an integer object (such as in slicing). Must return an integer (int or long).
2135
2136 .. versionadded:: 2.5
2137
2138
2139.. method:: object.__coerce__(self, other)
2140
2141 Called to implement "mixed-mode" numeric arithmetic. Should either return a
2142 2-tuple containing *self* and *other* converted to a common numeric type, or
2143 ``None`` if conversion is impossible. When the common type would be the type of
2144 ``other``, it is sufficient to return ``None``, since the interpreter will also
2145 ask the other object to attempt a coercion (but sometimes, if the implementation
2146 of the other type cannot be changed, it is useful to do the conversion to the
2147 other type here). A return value of ``NotImplemented`` is equivalent to
2148 returning ``None``.
2149
2150
2151.. _coercion-rules:
2152
2153Coercion rules
2154--------------
2155
2156This section used to document the rules for coercion. As the language has
2157evolved, the coercion rules have become hard to document precisely; documenting
2158what one version of one particular implementation does is undesirable. Instead,
2159here are some informal guidelines regarding coercion. In Python 3.0, coercion
2160will not be supported.
2161
2162*
2163
2164 If the left operand of a % operator is a string or Unicode object, no coercion
2165 takes place and the string formatting operation is invoked instead.
2166
2167*
2168
2169 It is no longer recommended to define a coercion operation. Mixed-mode
2170 operations on types that don't define coercion pass the original arguments to
2171 the operation.
2172
2173*
2174
2175 New-style classes (those derived from :class:`object`) never invoke the
2176 :meth:`__coerce__` method in response to a binary operator; the only time
2177 :meth:`__coerce__` is invoked is when the built-in function :func:`coerce` is
2178 called.
2179
2180*
2181
2182 For most intents and purposes, an operator that returns ``NotImplemented`` is
2183 treated the same as one that is not implemented at all.
2184
2185*
2186
2187 Below, :meth:`__op__` and :meth:`__rop__` are used to signify the generic method
2188 names corresponding to an operator; :meth:`__iop__` is used for the
2189 corresponding in-place operator. For example, for the operator '``+``',
2190 :meth:`__add__` and :meth:`__radd__` are used for the left and right variant of
2191 the binary operator, and :meth:`__iadd__` for the in-place variant.
2192
2193*
2194
2195 For objects *x* and *y*, first ``x.__op__(y)`` is tried. If this is not
2196 implemented or returns ``NotImplemented``, ``y.__rop__(x)`` is tried. If this
2197 is also not implemented or returns ``NotImplemented``, a :exc:`TypeError`
2198 exception is raised. But see the following exception:
2199
2200*
2201
2202 Exception to the previous item: if the left operand is an instance of a built-in
2203 type or a new-style class, and the right operand is an instance of a proper
2204 subclass of that type or class and overrides the base's :meth:`__rop__` method,
2205 the right operand's :meth:`__rop__` method is tried *before* the left operand's
2206 :meth:`__op__` method.
2207
2208 This is done so that a subclass can completely override binary operators.
2209 Otherwise, the left operand's :meth:`__op__` method would always accept the
2210 right operand: when an instance of a given class is expected, an instance of a
2211 subclass of that class is always acceptable.
2212
2213*
2214
2215 When either operand type defines a coercion, this coercion is called before that
2216 type's :meth:`__op__` or :meth:`__rop__` method is called, but no sooner. If
2217 the coercion returns an object of a different type for the operand whose
2218 coercion is invoked, part of the process is redone using the new object.
2219
2220*
2221
2222 When an in-place operator (like '``+=``') is used, if the left operand
2223 implements :meth:`__iop__`, it is invoked without any coercion. When the
2224 operation falls back to :meth:`__op__` and/or :meth:`__rop__`, the normal
2225 coercion rules apply.
2226
2227*
2228
Brett Cannon93298462008-08-14 05:55:18 +00002229 In ``x + y``, if *x* is a sequence that implements sequence concatenation,
Georg Brandl8ec7f652007-08-15 14:28:01 +00002230 sequence concatenation is invoked.
2231
2232*
2233
Brett Cannon93298462008-08-14 05:55:18 +00002234 In ``x * y``, if one operator is a sequence that implements sequence
Georg Brandl8ec7f652007-08-15 14:28:01 +00002235 repetition, and the other is an integer (:class:`int` or :class:`long`),
2236 sequence repetition is invoked.
2237
2238*
2239
2240 Rich comparisons (implemented by methods :meth:`__eq__` and so on) never use
2241 coercion. Three-way comparison (implemented by :meth:`__cmp__`) does use
2242 coercion under the same conditions as other binary operations use it.
2243
2244*
2245
2246 In the current implementation, the built-in numeric types :class:`int`,
2247 :class:`long` and :class:`float` do not use coercion; the type :class:`complex`
Georg Brandlec7d3902009-02-23 10:41:11 +00002248 however does use coercion for binary operators and rich comparisons, despite
2249 the above rules. The difference can become apparent when subclassing these
Georg Brandl8ec7f652007-08-15 14:28:01 +00002250 types. Over time, the type :class:`complex` may be fixed to avoid coercion.
2251 All these types implement a :meth:`__coerce__` method, for use by the built-in
2252 :func:`coerce` function.
2253
2254
2255.. _context-managers:
2256
2257With Statement Context Managers
2258-------------------------------
2259
2260.. versionadded:: 2.5
2261
2262A :dfn:`context manager` is an object that defines the runtime context to be
2263established when executing a :keyword:`with` statement. The context manager
2264handles the entry into, and the exit from, the desired runtime context for the
2265execution of the block of code. Context managers are normally invoked using the
2266:keyword:`with` statement (described in section :ref:`with`), but can also be
2267used by directly invoking their methods.
2268
2269.. index::
2270 statement: with
2271 single: context manager
2272
2273Typical uses of context managers include saving and restoring various kinds of
2274global state, locking and unlocking resources, closing opened files, etc.
2275
2276For more information on context managers, see :ref:`typecontextmanager`.
2277
2278
2279.. method:: object.__enter__(self)
2280
2281 Enter the runtime context related to this object. The :keyword:`with` statement
2282 will bind this method's return value to the target(s) specified in the
2283 :keyword:`as` clause of the statement, if any.
2284
2285
2286.. method:: object.__exit__(self, exc_type, exc_value, traceback)
2287
2288 Exit the runtime context related to this object. The parameters describe the
2289 exception that caused the context to be exited. If the context was exited
2290 without an exception, all three arguments will be :const:`None`.
2291
2292 If an exception is supplied, and the method wishes to suppress the exception
2293 (i.e., prevent it from being propagated), it should return a true value.
2294 Otherwise, the exception will be processed normally upon exit from this method.
2295
2296 Note that :meth:`__exit__` methods should not reraise the passed-in exception;
2297 this is the caller's responsibility.
2298
2299
2300.. seealso::
2301
2302 :pep:`0343` - The "with" statement
2303 The specification, background, and examples for the Python :keyword:`with`
2304 statement.
2305
Nick Coghlana5107482008-08-04 12:40:59 +00002306
2307.. _old-style-special-lookup:
2308
2309Special method lookup for old-style classes
2310-------------------------------------------
2311
2312For old-style classes, special methods are always looked up in exactly the
2313same way as any other method or attribute. This is the case regardless of
2314whether the method is being looked up explicitly as in ``x.__getitem__(i)``
2315or implicitly as in ``x[i]``.
2316
2317This behaviour means that special methods may exhibit different behaviour
2318for different instances of a single old-style class if the appropriate
2319special attributes are set differently::
2320
2321 >>> class C:
2322 ... pass
2323 ...
2324 >>> c1 = C()
2325 >>> c2 = C()
2326 >>> c1.__len__ = lambda: 5
2327 >>> c2.__len__ = lambda: 9
2328 >>> len(c1)
2329 5
2330 >>> len(c2)
2331 9
2332
2333
2334.. _new-style-special-lookup:
2335
2336Special method lookup for new-style classes
2337-------------------------------------------
2338
2339For new-style classes, implicit invocations of special methods are only guaranteed
2340to work correctly if defined on an object's type, not in the object's instance
2341dictionary. That behaviour is the reason why the following code raises an
2342exception (unlike the equivalent example with old-style classes)::
2343
2344 >>> class C(object):
2345 ... pass
2346 ...
2347 >>> c = C()
2348 >>> c.__len__ = lambda: 5
2349 >>> len(c)
2350 Traceback (most recent call last):
2351 File "<stdin>", line 1, in <module>
2352 TypeError: object of type 'C' has no len()
2353
2354The rationale behind this behaviour lies with a number of special methods such
2355as :meth:`__hash__` and :meth:`__repr__` that are implemented by all objects,
2356including type objects. If the implicit lookup of these methods used the
2357conventional lookup process, they would fail when invoked on the type object
2358itself::
2359
2360 >>> 1 .__hash__() == hash(1)
2361 True
2362 >>> int.__hash__() == hash(int)
2363 Traceback (most recent call last):
2364 File "<stdin>", line 1, in <module>
2365 TypeError: descriptor '__hash__' of 'int' object needs an argument
2366
2367Incorrectly attempting to invoke an unbound method of a class in this way is
2368sometimes referred to as 'metaclass confusion', and is avoided by bypassing
2369the instance when looking up special methods::
2370
2371 >>> type(1).__hash__(1) == hash(1)
2372 True
2373 >>> type(int).__hash__(int) == hash(int)
2374 True
2375
2376In addition to bypassing any instance attributes in the interest of
Georg Brandlf3a0b862008-12-07 14:47:12 +00002377correctness, implicit special method lookup generally also bypasses the
Nick Coghlana5107482008-08-04 12:40:59 +00002378:meth:`__getattribute__` method even of the object's metaclass::
2379
2380 >>> class Meta(type):
2381 ... def __getattribute__(*args):
2382 ... print "Metaclass getattribute invoked"
2383 ... return type.__getattribute__(*args)
2384 ...
2385 >>> class C(object):
2386 ... __metaclass__ = Meta
2387 ... def __len__(self):
2388 ... return 10
2389 ... def __getattribute__(*args):
2390 ... print "Class getattribute invoked"
2391 ... return object.__getattribute__(*args)
2392 ...
2393 >>> c = C()
2394 >>> c.__len__() # Explicit lookup via instance
2395 Class getattribute invoked
2396 10
2397 >>> type(c).__len__(c) # Explicit lookup via type
2398 Metaclass getattribute invoked
2399 10
2400 >>> len(c) # Implicit lookup
2401 10
2402
2403Bypassing the :meth:`__getattribute__` machinery in this fashion
2404provides significant scope for speed optimisations within the
2405interpreter, at the cost of some flexibility in the handling of
2406special methods (the special method *must* be set on the class
2407object itself in order to be consistently invoked by the interpreter).
2408
2409
Georg Brandl8ec7f652007-08-15 14:28:01 +00002410.. rubric:: Footnotes
2411
Nick Coghlana5107482008-08-04 12:40:59 +00002412.. [#] It *is* possible in some cases to change an object's type, under certain
2413 controlled conditions. It generally isn't a good idea though, since it can
2414 lead to some very strange behaviour if it is handled incorrectly.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002415
Georg Brandl37614222007-08-23 21:42:54 +00002416.. [#] A descriptor can define any combination of :meth:`__get__`,
2417 :meth:`__set__` and :meth:`__delete__`. If it does not define :meth:`__get__`,
2418 then accessing the attribute even on an instance will return the descriptor
2419 object itself. If the descriptor defines :meth:`__set__` and/or
2420 :meth:`__delete__`, it is a data descriptor; if it defines neither, it is a
2421 non-data descriptor.
2422
Georg Brandl8ec7f652007-08-15 14:28:01 +00002423.. [#] For operands of the same type, it is assumed that if the non-reflected method
2424 (such as :meth:`__add__`) fails the operation is not supported, which is why the
2425 reflected method is not called.
2426