blob: 0510d8e62cd1aec06a7300a791e4fe658264a48b [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001
2.. _datamodel:
3
4**********
5Data model
6**********
7
8
9.. _objects:
10
11Objects, values and types
12=========================
13
14.. index::
15 single: object
16 single: data
17
18:dfn:`Objects` are Python's abstraction for data. All data in a Python program
19is represented by objects or by relations between objects. (In a sense, and in
20conformance to Von Neumann's model of a "stored program computer," code is also
21represented by objects.)
22
23.. index::
24 builtin: id
25 builtin: type
26 single: identity of an object
27 single: value of an object
28 single: type of an object
29 single: mutable object
30 single: immutable object
31
Georg Brandl85eb8c12007-08-31 16:33:38 +000032.. XXX it *is* now possible in some cases to change an object's
33 type, under certain controlled conditions
34
Georg Brandl116aa622007-08-15 14:28:22 +000035Every object has an identity, a type and a value. An object's *identity* never
36changes once it has been created; you may think of it as the object's address in
37memory. The ':keyword:`is`' operator compares the identity of two objects; the
Nick Coghlan337b2bf2012-05-20 18:30:49 +100038:func:`id` function returns an integer representing its identity.
39
40.. impl-detail::
41
42 For CPython, ``id(x)`` is the memory address where ``x`` is stored.
43
Georg Brandl116aa622007-08-15 14:28:22 +000044An object's type determines the operations that the object supports (e.g., "does
45it have a length?") and also defines the possible values for objects of that
46type. The :func:`type` function returns an object's type (which is an object
Nick Coghlan337b2bf2012-05-20 18:30:49 +100047itself). Like its identity, an object's :dfn:`type` is also unchangeable.
48[#]_
49
50The *value* of some objects can change. Objects whose value can
Georg Brandl116aa622007-08-15 14:28:22 +000051change are said to be *mutable*; objects whose value is unchangeable once they
52are created are called *immutable*. (The value of an immutable container object
53that contains a reference to a mutable object can change when the latter's value
54is changed; however the container is still considered immutable, because the
55collection of objects it contains cannot be changed. So, immutability is not
56strictly the same as having an unchangeable value, it is more subtle.) An
57object's mutability is determined by its type; for instance, numbers, strings
58and tuples are immutable, while dictionaries and lists are mutable.
59
60.. index::
61 single: garbage collection
62 single: reference counting
63 single: unreachable object
64
65Objects are never explicitly destroyed; however, when they become unreachable
66they may be garbage-collected. An implementation is allowed to postpone garbage
67collection or omit it altogether --- it is a matter of implementation quality
68how garbage collection is implemented, as long as no objects are collected that
Georg Brandl495f7b52009-10-27 15:28:25 +000069are still reachable.
70
71.. impl-detail::
72
73 CPython currently uses a reference-counting scheme with (optional) delayed
74 detection of cyclically linked garbage, which collects most objects as soon
75 as they become unreachable, but is not guaranteed to collect garbage
76 containing circular references. See the documentation of the :mod:`gc`
77 module for information on controlling the collection of cyclic garbage.
78 Other implementations act differently and CPython may change.
Gregory P. Smithc5425472011-03-10 11:28:50 -080079 Do not depend on immediate finalization of objects when they become
80 unreachable (ex: always close files).
Georg Brandl116aa622007-08-15 14:28:22 +000081
82Note that the use of the implementation's tracing or debugging facilities may
83keep objects alive that would normally be collectable. Also note that catching
84an exception with a ':keyword:`try`...\ :keyword:`except`' statement may keep
85objects alive.
86
87Some objects contain references to "external" resources such as open files or
88windows. It is understood that these resources are freed when the object is
89garbage-collected, but since garbage collection is not guaranteed to happen,
90such objects also provide an explicit way to release the external resource,
91usually a :meth:`close` method. Programs are strongly recommended to explicitly
92close such objects. The ':keyword:`try`...\ :keyword:`finally`' statement
Nick Coghlan3a5d7e32008-08-31 12:40:14 +000093and the ':keyword:`with`' statement provide convenient ways to do this.
Georg Brandl116aa622007-08-15 14:28:22 +000094
95.. index:: single: container
96
97Some objects contain references to other objects; these are called *containers*.
98Examples of containers are tuples, lists and dictionaries. The references are
99part of a container's value. In most cases, when we talk about the value of a
100container, we imply the values, not the identities of the contained objects;
101however, when we talk about the mutability of a container, only the identities
102of the immediately contained objects are implied. So, if an immutable container
103(like a tuple) contains a reference to a mutable object, its value changes if
104that mutable object is changed.
105
106Types affect almost all aspects of object behavior. Even the importance of
107object identity is affected in some sense: for immutable types, operations that
108compute new values may actually return a reference to any existing object with
109the same type and value, while for mutable objects this is not allowed. E.g.,
110after ``a = 1; b = 1``, ``a`` and ``b`` may or may not refer to the same object
111with the value one, depending on the implementation, but after ``c = []; d =
112[]``, ``c`` and ``d`` are guaranteed to refer to two different, unique, newly
113created empty lists. (Note that ``c = d = []`` assigns the same object to both
114``c`` and ``d``.)
115
116
117.. _types:
118
119The standard type hierarchy
120===========================
121
122.. index::
123 single: type
124 pair: data; type
125 pair: type; hierarchy
126 pair: extension; module
127 pair: C; language
128
129Below is a list of the types that are built into Python. Extension modules
130(written in C, Java, or other languages, depending on the implementation) can
131define additional types. Future versions of Python may add types to the type
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000132hierarchy (e.g., rational numbers, efficiently stored arrays of integers, etc.),
133although such additions will often be provided via the standard library instead.
Georg Brandl116aa622007-08-15 14:28:22 +0000134
135.. index::
136 single: attribute
137 pair: special; attribute
138 triple: generic; special; attribute
139
140Some of the type descriptions below contain a paragraph listing 'special
141attributes.' These are attributes that provide access to the implementation and
142are not intended for general use. Their definition may change in the future.
143
144None
145 .. index:: object: None
146
147 This type has a single value. There is a single object with this value. This
148 object is accessed through the built-in name ``None``. It is used to signify the
149 absence of a value in many situations, e.g., it is returned from functions that
150 don't explicitly return anything. Its truth value is false.
151
152NotImplemented
153 .. index:: object: NotImplemented
154
155 This type has a single value. There is a single object with this value. This
156 object is accessed through the built-in name ``NotImplemented``. Numeric methods
157 and rich comparison methods may return this value if they do not implement the
158 operation for the operands provided. (The interpreter will then try the
159 reflected operation, or some other fallback, depending on the operator.) Its
160 truth value is true.
161
162Ellipsis
163 .. index:: object: Ellipsis
164
165 This type has a single value. There is a single object with this value. This
166 object is accessed through the literal ``...`` or the built-in name
167 ``Ellipsis``. Its truth value is true.
168
Christian Heimes072c0f12008-01-03 23:01:04 +0000169:class:`numbers.Number`
Georg Brandl116aa622007-08-15 14:28:22 +0000170 .. index:: object: numeric
171
172 These are created by numeric literals and returned as results by arithmetic
173 operators and arithmetic built-in functions. Numeric objects are immutable;
174 once created their value never changes. Python numbers are of course strongly
175 related to mathematical numbers, but subject to the limitations of numerical
176 representation in computers.
177
178 Python distinguishes between integers, floating point numbers, and complex
179 numbers:
180
Christian Heimes072c0f12008-01-03 23:01:04 +0000181 :class:`numbers.Integral`
Georg Brandl116aa622007-08-15 14:28:22 +0000182 .. index:: object: integer
183
184 These represent elements from the mathematical set of integers (positive and
185 negative).
186
Georg Brandl59d69162008-01-07 09:27:36 +0000187 There are two types of integers:
Georg Brandl116aa622007-08-15 14:28:22 +0000188
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000189 Integers (:class:`int`)
Georg Brandl116aa622007-08-15 14:28:22 +0000190
Georg Brandl116aa622007-08-15 14:28:22 +0000191 These represent numbers in an unlimited range, subject to available (virtual)
192 memory only. For the purpose of shift and mask operations, a binary
193 representation is assumed, and negative numbers are represented in a variant of
194 2's complement which gives the illusion of an infinite string of sign bits
195 extending to the left.
196
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000197 Booleans (:class:`bool`)
Georg Brandl116aa622007-08-15 14:28:22 +0000198 .. index::
199 object: Boolean
200 single: False
201 single: True
202
203 These represent the truth values False and True. The two objects representing
204 the values False and True are the only Boolean objects. The Boolean type is a
Georg Brandl95817b32008-05-11 14:30:18 +0000205 subtype of the integer type, and Boolean values behave like the values 0 and 1,
Georg Brandl116aa622007-08-15 14:28:22 +0000206 respectively, in almost all contexts, the exception being that when converted to
207 a string, the strings ``"False"`` or ``"True"`` are returned, respectively.
208
209 .. index:: pair: integer; representation
210
211 The rules for integer representation are intended to give the most meaningful
Georg Brandlbb74a782008-05-11 10:53:16 +0000212 interpretation of shift and mask operations involving negative integers.
Georg Brandl116aa622007-08-15 14:28:22 +0000213
Christian Heimes072c0f12008-01-03 23:01:04 +0000214 :class:`numbers.Real` (:class:`float`)
Georg Brandl116aa622007-08-15 14:28:22 +0000215 .. index::
216 object: floating point
217 pair: floating point; number
218 pair: C; language
219 pair: Java; language
220
221 These represent machine-level double precision floating point numbers. You are
222 at the mercy of the underlying machine architecture (and C or Java
223 implementation) for the accepted range and handling of overflow. Python does not
224 support single-precision floating point numbers; the savings in processor and
225 memory usage that are usually the reason for using these is dwarfed by the
226 overhead of using objects in Python, so there is no reason to complicate the
227 language with two kinds of floating point numbers.
228
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000229 :class:`numbers.Complex` (:class:`complex`)
Georg Brandl116aa622007-08-15 14:28:22 +0000230 .. index::
231 object: complex
232 pair: complex; number
233
234 These represent complex numbers as a pair of machine-level double precision
235 floating point numbers. The same caveats apply as for floating point numbers.
236 The real and imaginary parts of a complex number ``z`` can be retrieved through
237 the read-only attributes ``z.real`` and ``z.imag``.
238
Georg Brandl116aa622007-08-15 14:28:22 +0000239Sequences
240 .. index::
241 builtin: len
242 object: sequence
243 single: index operation
244 single: item selection
245 single: subscription
246
247 These represent finite ordered sets indexed by non-negative numbers. The
248 built-in function :func:`len` returns the number of items of a sequence. When
249 the length of a sequence is *n*, the index set contains the numbers 0, 1,
250 ..., *n*-1. Item *i* of sequence *a* is selected by ``a[i]``.
251
252 .. index:: single: slicing
253
254 Sequences also support slicing: ``a[i:j]`` selects all items with index *k* such
255 that *i* ``<=`` *k* ``<`` *j*. When used as an expression, a slice is a
256 sequence of the same type. This implies that the index set is renumbered so
257 that it starts at 0.
258
Georg Brandl116aa622007-08-15 14:28:22 +0000259 Some sequences also support "extended slicing" with a third "step" parameter:
260 ``a[i:j:k]`` selects all items of *a* with index *x* where ``x = i + n*k``, *n*
261 ``>=`` ``0`` and *i* ``<=`` *x* ``<`` *j*.
262
263 Sequences are distinguished according to their mutability:
264
265 Immutable sequences
266 .. index::
267 object: immutable sequence
268 object: immutable
269
270 An object of an immutable sequence type cannot change once it is created. (If
271 the object contains references to other objects, these other objects may be
272 mutable and may be changed; however, the collection of objects directly
273 referenced by an immutable object cannot change.)
274
275 The following types are immutable sequences:
276
277 Strings
278 .. index::
279 builtin: chr
280 builtin: ord
Georg Brandldcc56f82007-08-31 16:41:12 +0000281 builtin: str
Georg Brandl116aa622007-08-15 14:28:22 +0000282 single: character
283 single: integer
284 single: Unicode
285
Ezio Melottif4d76e62011-10-25 09:23:42 +0300286 A string is a sequence of values that represent Unicode codepoints.
287 All the codepoints in range ``U+0000 - U+10FFFF`` can be represented
288 in a string. Python doesn't have a :c:type:`chr` type, and
Ezio Melottif7f0a662011-10-25 17:22:22 +0300289 every character in the string is represented as a string object
290 with length ``1``. The built-in function :func:`ord` converts a
291 character to its codepoint (as an integer); :func:`chr` converts
Ezio Melottif4d76e62011-10-25 09:23:42 +0300292 an integer in range ``0 - 10FFFF`` to the corresponding character.
293 :meth:`str.encode` can be used to convert a :class:`str` to
294 :class:`bytes` using the given encoding, and :meth:`bytes.decode` can
295 be used to achieve the opposite.
Georg Brandl116aa622007-08-15 14:28:22 +0000296
297 Tuples
298 .. index::
299 object: tuple
300 pair: singleton; tuple
301 pair: empty; tuple
302
Georg Brandldcc56f82007-08-31 16:41:12 +0000303 The items of a tuple are arbitrary Python objects. Tuples of two or
304 more items are formed by comma-separated lists of expressions. A tuple
305 of one item (a 'singleton') can be formed by affixing a comma to an
306 expression (an expression by itself does not create a tuple, since
307 parentheses must be usable for grouping of expressions). An empty
308 tuple can be formed by an empty pair of parentheses.
Georg Brandl116aa622007-08-15 14:28:22 +0000309
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000310 Bytes
311 .. index:: bytes, byte
312
313 A bytes object is an immutable array. The items are 8-bit bytes,
314 represented by integers in the range 0 <= x < 256. Bytes literals
315 (like ``b'abc'`` and the built-in function :func:`bytes` can be used to
316 construct bytes objects. Also, bytes objects can be decoded to strings
317 via the :meth:`decode` method.
318
Georg Brandl116aa622007-08-15 14:28:22 +0000319 Mutable sequences
320 .. index::
321 object: mutable sequence
322 object: mutable
323 pair: assignment; statement
324 single: delete
325 statement: del
326 single: subscription
327 single: slicing
328
329 Mutable sequences can be changed after they are created. The subscription and
330 slicing notations can be used as the target of assignment and :keyword:`del`
331 (delete) statements.
332
Benjamin Petersonb58dda72009-01-18 22:27:04 +0000333 There are currently two intrinsic mutable sequence types:
Georg Brandl116aa622007-08-15 14:28:22 +0000334
335 Lists
336 .. index:: object: list
337
Georg Brandldcc56f82007-08-31 16:41:12 +0000338 The items of a list are arbitrary Python objects. Lists are formed by
339 placing a comma-separated list of expressions in square brackets. (Note
340 that there are no special cases needed to form lists of length 0 or 1.)
341
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000342 Byte Arrays
343 .. index:: bytearray
Georg Brandldcc56f82007-08-31 16:41:12 +0000344
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000345 A bytearray object is a mutable array. They are created by the built-in
346 :func:`bytearray` constructor. Aside from being mutable (and hence
347 unhashable), byte arrays otherwise provide the same interface and
348 functionality as immutable bytes objects.
Georg Brandl116aa622007-08-15 14:28:22 +0000349
350 .. index:: module: array
351
Georg Brandldcc56f82007-08-31 16:41:12 +0000352 The extension module :mod:`array` provides an additional example of a
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000353 mutable sequence type, as does the :mod:`collections` module.
Georg Brandl116aa622007-08-15 14:28:22 +0000354
Georg Brandl116aa622007-08-15 14:28:22 +0000355Set types
356 .. index::
357 builtin: len
358 object: set type
359
360 These represent unordered, finite sets of unique, immutable objects. As such,
361 they cannot be indexed by any subscript. However, they can be iterated over, and
362 the built-in function :func:`len` returns the number of items in a set. Common
363 uses for sets are fast membership testing, removing duplicates from a sequence,
364 and computing mathematical operations such as intersection, union, difference,
365 and symmetric difference.
366
367 For set elements, the same immutability rules apply as for dictionary keys. Note
368 that numeric types obey the normal rules for numeric comparison: if two numbers
369 compare equal (e.g., ``1`` and ``1.0``), only one of them can be contained in a
370 set.
371
372 There are currently two intrinsic set types:
373
374 Sets
375 .. index:: object: set
376
377 These represent a mutable set. They are created by the built-in :func:`set`
378 constructor and can be modified afterwards by several methods, such as
379 :meth:`add`.
380
381 Frozen sets
382 .. index:: object: frozenset
383
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000384 These represent an immutable set. They are created by the built-in
385 :func:`frozenset` constructor. As a frozenset is immutable and
386 :term:`hashable`, it can be used again as an element of another set, or as
387 a dictionary key.
Georg Brandl116aa622007-08-15 14:28:22 +0000388
Georg Brandl116aa622007-08-15 14:28:22 +0000389Mappings
390 .. index::
391 builtin: len
392 single: subscription
393 object: mapping
394
395 These represent finite sets of objects indexed by arbitrary index sets. The
396 subscript notation ``a[k]`` selects the item indexed by ``k`` from the mapping
397 ``a``; this can be used in expressions and as the target of assignments or
398 :keyword:`del` statements. The built-in function :func:`len` returns the number
399 of items in a mapping.
400
401 There is currently a single intrinsic mapping type:
402
403 Dictionaries
404 .. index:: object: dictionary
405
406 These represent finite sets of objects indexed by nearly arbitrary values. The
407 only types of values not acceptable as keys are values containing lists or
408 dictionaries or other mutable types that are compared by value rather than by
409 object identity, the reason being that the efficient implementation of
410 dictionaries requires a key's hash value to remain constant. Numeric types used
411 for keys obey the normal rules for numeric comparison: if two numbers compare
412 equal (e.g., ``1`` and ``1.0``) then they can be used interchangeably to index
413 the same dictionary entry.
414
415 Dictionaries are mutable; they can be created by the ``{...}`` notation (see
416 section :ref:`dict`).
417
418 .. index::
Georg Brandl0a7ac7d2008-05-26 10:29:35 +0000419 module: dbm.ndbm
420 module: dbm.gnu
Georg Brandl116aa622007-08-15 14:28:22 +0000421
Benjamin Peterson9a46cab2008-09-08 02:49:30 +0000422 The extension modules :mod:`dbm.ndbm` and :mod:`dbm.gnu` provide
423 additional examples of mapping types, as does the :mod:`collections`
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000424 module.
Georg Brandl116aa622007-08-15 14:28:22 +0000425
Georg Brandl116aa622007-08-15 14:28:22 +0000426Callable types
427 .. index::
428 object: callable
429 pair: function; call
430 single: invocation
431 pair: function; argument
432
433 These are the types to which the function call operation (see section
434 :ref:`calls`) can be applied:
435
436 User-defined functions
437 .. index::
438 pair: user-defined; function
439 object: function
440 object: user-defined function
441
442 A user-defined function object is created by a function definition (see
443 section :ref:`function`). It should be called with an argument list
444 containing the same number of items as the function's formal parameter
445 list.
446
447 Special attributes:
448
449 +-------------------------+-------------------------------+-----------+
450 | Attribute | Meaning | |
451 +=========================+===============================+===========+
452 | :attr:`__doc__` | The function's documentation | Writable |
453 | | string, or ``None`` if | |
454 | | unavailable | |
455 +-------------------------+-------------------------------+-----------+
456 | :attr:`__name__` | The function's name | Writable |
457 +-------------------------+-------------------------------+-----------+
Antoine Pitrou86a36b52011-11-25 18:56:07 +0100458 | :attr:`__qualname__` | The function's | Writable |
459 | | :term:`qualified name` | |
460 | | | |
461 | | .. versionadded:: 3.3 | |
462 +-------------------------+-------------------------------+-----------+
Georg Brandl116aa622007-08-15 14:28:22 +0000463 | :attr:`__module__` | The name of the module the | Writable |
464 | | function was defined in, or | |
465 | | ``None`` if unavailable. | |
466 +-------------------------+-------------------------------+-----------+
467 | :attr:`__defaults__` | A tuple containing default | Writable |
468 | | argument values for those | |
469 | | arguments that have defaults, | |
470 | | or ``None`` if no arguments | |
471 | | have a default value | |
472 +-------------------------+-------------------------------+-----------+
473 | :attr:`__code__` | The code object representing | Writable |
474 | | the compiled function body. | |
475 +-------------------------+-------------------------------+-----------+
476 | :attr:`__globals__` | A reference to the dictionary | Read-only |
477 | | that holds the function's | |
478 | | global variables --- the | |
479 | | global namespace of the | |
480 | | module in which the function | |
481 | | was defined. | |
482 +-------------------------+-------------------------------+-----------+
483 | :attr:`__dict__` | The namespace supporting | Writable |
484 | | arbitrary function | |
485 | | attributes. | |
486 +-------------------------+-------------------------------+-----------+
487 | :attr:`__closure__` | ``None`` or a tuple of cells | Read-only |
488 | | that contain bindings for the | |
489 | | function's free variables. | |
490 +-------------------------+-------------------------------+-----------+
491 | :attr:`__annotations__` | A dict containing annotations | Writable |
492 | | of parameters. The keys of | |
493 | | the dict are the parameter | |
494 | | names, or ``'return'`` for | |
495 | | the return annotation, if | |
496 | | provided. | |
497 +-------------------------+-------------------------------+-----------+
498 | :attr:`__kwdefaults__` | A dict containing defaults | Writable |
499 | | for keyword-only parameters. | |
500 +-------------------------+-------------------------------+-----------+
501
502 Most of the attributes labelled "Writable" check the type of the assigned value.
503
Georg Brandl116aa622007-08-15 14:28:22 +0000504 Function objects also support getting and setting arbitrary attributes, which
505 can be used, for example, to attach metadata to functions. Regular attribute
506 dot-notation is used to get and set such attributes. *Note that the current
507 implementation only supports function attributes on user-defined functions.
508 Function attributes on built-in functions may be supported in the future.*
509
510 Additional information about a function's definition can be retrieved from its
511 code object; see the description of internal types below.
512
513 .. index::
514 single: __doc__ (function attribute)
515 single: __name__ (function attribute)
516 single: __module__ (function attribute)
517 single: __dict__ (function attribute)
518 single: __defaults__ (function attribute)
519 single: __closure__ (function attribute)
520 single: __code__ (function attribute)
521 single: __globals__ (function attribute)
522 single: __annotations__ (function attribute)
523 single: __kwdefaults__ (function attribute)
524 pair: global; namespace
525
Georg Brandl2e0b7552007-11-27 12:43:08 +0000526 Instance methods
Georg Brandl116aa622007-08-15 14:28:22 +0000527 .. index::
528 object: method
529 object: user-defined method
530 pair: user-defined; method
531
Georg Brandl2e0b7552007-11-27 12:43:08 +0000532 An instance method object combines a class, a class instance and any
533 callable object (normally a user-defined function).
534
535 .. index::
536 single: __func__ (method attribute)
537 single: __self__ (method attribute)
538 single: __doc__ (method attribute)
539 single: __name__ (method attribute)
540 single: __module__ (method attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000541
Christian Heimesff737952007-11-27 10:40:20 +0000542 Special read-only attributes: :attr:`__self__` is the class instance object,
543 :attr:`__func__` is the function object; :attr:`__doc__` is the method's
544 documentation (same as ``__func__.__doc__``); :attr:`__name__` is the
545 method name (same as ``__func__.__name__``); :attr:`__module__` is the
546 name of the module the method was defined in, or ``None`` if unavailable.
Georg Brandl116aa622007-08-15 14:28:22 +0000547
Georg Brandl116aa622007-08-15 14:28:22 +0000548 Methods also support accessing (but not setting) the arbitrary function
549 attributes on the underlying function object.
550
Georg Brandl2e0b7552007-11-27 12:43:08 +0000551 User-defined method objects may be created when getting an attribute of a
552 class (perhaps via an instance of that class), if that attribute is a
553 user-defined function object or a class method object.
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000554
Georg Brandl2e0b7552007-11-27 12:43:08 +0000555 When an instance method object is created by retrieving a user-defined
556 function object from a class via one of its instances, its
557 :attr:`__self__` attribute is the instance, and the method object is said
558 to be bound. The new method's :attr:`__func__` attribute is the original
559 function object.
Georg Brandl116aa622007-08-15 14:28:22 +0000560
Georg Brandl2e0b7552007-11-27 12:43:08 +0000561 When a user-defined method object is created by retrieving another method
562 object from a class or instance, the behaviour is the same as for a
563 function object, except that the :attr:`__func__` attribute of the new
564 instance is not the original method object but its :attr:`__func__`
565 attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000566
Georg Brandl2e0b7552007-11-27 12:43:08 +0000567 When an instance method object is created by retrieving a class method
568 object from a class or instance, its :attr:`__self__` attribute is the
569 class itself, and its :attr:`__func__` attribute is the function object
570 underlying the class method.
Georg Brandl116aa622007-08-15 14:28:22 +0000571
Georg Brandl2e0b7552007-11-27 12:43:08 +0000572 When an instance method object is called, the underlying function
573 (:attr:`__func__`) is called, inserting the class instance
574 (:attr:`__self__`) in front of the argument list. For instance, when
575 :class:`C` is a class which contains a definition for a function
576 :meth:`f`, and ``x`` is an instance of :class:`C`, calling ``x.f(1)`` is
577 equivalent to calling ``C.f(x, 1)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000578
Georg Brandl2e0b7552007-11-27 12:43:08 +0000579 When an instance method object is derived from a class method object, the
580 "class instance" stored in :attr:`__self__` will actually be the class
581 itself, so that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to
582 calling ``f(C,1)`` where ``f`` is the underlying function.
Georg Brandl116aa622007-08-15 14:28:22 +0000583
Georg Brandl2e0b7552007-11-27 12:43:08 +0000584 Note that the transformation from function object to instance method
585 object happens each time the attribute is retrieved from the instance. In
586 some cases, a fruitful optimization is to assign the attribute to a local
587 variable and call that local variable. Also notice that this
588 transformation only happens for user-defined functions; other callable
589 objects (and all non-callable objects) are retrieved without
590 transformation. It is also important to note that user-defined functions
591 which are attributes of a class instance are not converted to bound
592 methods; this *only* happens when the function is an attribute of the
593 class.
Georg Brandl116aa622007-08-15 14:28:22 +0000594
595 Generator functions
596 .. index::
597 single: generator; function
598 single: generator; iterator
599
600 A function or method which uses the :keyword:`yield` statement (see section
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000601 :ref:`yield`) is called a :dfn:`generator function`. Such a function, when
602 called, always returns an iterator object which can be used to execute the
603 body of the function: calling the iterator's :meth:`__next__` method will
604 cause the function to execute until it provides a value using the
605 :keyword:`yield` statement. When the function executes a
Georg Brandl116aa622007-08-15 14:28:22 +0000606 :keyword:`return` statement or falls off the end, a :exc:`StopIteration`
607 exception is raised and the iterator will have reached the end of the set of
608 values to be returned.
609
610 Built-in functions
611 .. index::
612 object: built-in function
613 object: function
614 pair: C; language
615
616 A built-in function object is a wrapper around a C function. Examples of
617 built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a
618 standard built-in module). The number and type of the arguments are
619 determined by the C function. Special read-only attributes:
620 :attr:`__doc__` is the function's documentation string, or ``None`` if
621 unavailable; :attr:`__name__` is the function's name; :attr:`__self__` is
622 set to ``None`` (but see the next item); :attr:`__module__` is the name of
623 the module the function was defined in or ``None`` if unavailable.
624
625 Built-in methods
626 .. index::
627 object: built-in method
628 object: method
629 pair: built-in; method
630
631 This is really a different disguise of a built-in function, this time containing
632 an object passed to the C function as an implicit extra argument. An example of
633 a built-in method is ``alist.append()``, assuming *alist* is a list object. In
634 this case, the special read-only attribute :attr:`__self__` is set to the object
Éric Araujoc9562f32010-12-26 02:18:49 +0000635 denoted by *alist*.
Georg Brandl116aa622007-08-15 14:28:22 +0000636
Georg Brandl85eb8c12007-08-31 16:33:38 +0000637 Classes
638 Classes are callable. These objects normally act as factories for new
639 instances of themselves, but variations are possible for class types that
640 override :meth:`__new__`. The arguments of the call are passed to
641 :meth:`__new__` and, in the typical case, to :meth:`__init__` to
642 initialize the new instance.
Georg Brandl116aa622007-08-15 14:28:22 +0000643
Georg Brandl85eb8c12007-08-31 16:33:38 +0000644 Class Instances
645 Instances of arbitrary classes can be made callable by defining a
646 :meth:`__call__` method in their class.
Georg Brandl116aa622007-08-15 14:28:22 +0000647
Georg Brandl116aa622007-08-15 14:28:22 +0000648
649Modules
650 .. index::
651 statement: import
652 object: module
653
654 Modules are imported by the :keyword:`import` statement (see section
655 :ref:`import`). A module object has a
656 namespace implemented by a dictionary object (this is the dictionary referenced
657 by the __globals__ attribute of functions defined in the module). Attribute
658 references are translated to lookups in this dictionary, e.g., ``m.x`` is
659 equivalent to ``m.__dict__["x"]``. A module object does not contain the code
660 object used to initialize the module (since it isn't needed once the
661 initialization is done).
662
Georg Brandl116aa622007-08-15 14:28:22 +0000663 Attribute assignment updates the module's namespace dictionary, e.g., ``m.x =
664 1`` is equivalent to ``m.__dict__["x"] = 1``.
665
666 .. index:: single: __dict__ (module attribute)
667
668 Special read-only attribute: :attr:`__dict__` is the module's namespace as a
669 dictionary object.
670
Benjamin Peterson5c4bfc42010-10-12 22:57:59 +0000671 .. impl-detail::
672
673 Because of the way CPython clears module dictionaries, the module
674 dictionary will be cleared when the module falls out of scope even if the
675 dictionary still has live references. To avoid this, copy the dictionary
676 or keep the module around while using its dictionary directly.
677
Georg Brandl116aa622007-08-15 14:28:22 +0000678 .. index::
679 single: __name__ (module attribute)
680 single: __doc__ (module attribute)
681 single: __file__ (module attribute)
682 pair: module; namespace
683
684 Predefined (writable) attributes: :attr:`__name__` is the module's name;
685 :attr:`__doc__` is the module's documentation string, or ``None`` if
686 unavailable; :attr:`__file__` is the pathname of the file from which the module
687 was loaded, if it was loaded from a file. The :attr:`__file__` attribute is not
688 present for C modules that are statically linked into the interpreter; for
689 extension modules loaded dynamically from a shared library, it is the pathname
690 of the shared library file.
691
Georg Brandl85eb8c12007-08-31 16:33:38 +0000692Custom classes
Georg Brandl5dbb84a2009-09-02 20:31:26 +0000693 Custom class types are typically created by class definitions (see section
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000694 :ref:`class`). A class has a namespace implemented by a dictionary object.
695 Class attribute references are translated to lookups in this dictionary, e.g.,
696 ``C.x`` is translated to ``C.__dict__["x"]`` (although there are a number of
697 hooks which allow for other means of locating attributes). When the attribute
698 name is not found there, the attribute search continues in the base classes.
699 This search of the base classes uses the C3 method resolution order which
700 behaves correctly even in the presence of 'diamond' inheritance structures
701 where there are multiple inheritance paths leading back to a common ancestor.
702 Additional details on the C3 MRO used by Python can be found in the
703 documentation accompanying the 2.3 release at
704 http://www.python.org/download/releases/2.3/mro/.
Georg Brandl116aa622007-08-15 14:28:22 +0000705
Nick Coghlan3a5d7e32008-08-31 12:40:14 +0000706 .. XXX: Could we add that MRO doc as an appendix to the language ref?
Georg Brandl85eb8c12007-08-31 16:33:38 +0000707
Georg Brandl116aa622007-08-15 14:28:22 +0000708 .. index::
709 object: class
710 object: class instance
711 object: instance
712 pair: class object; call
713 single: container
714 object: dictionary
715 pair: class; attribute
716
717 When a class attribute reference (for class :class:`C`, say) would yield a
Georg Brandl2e0b7552007-11-27 12:43:08 +0000718 class method object, it is transformed into an instance method object whose
719 :attr:`__self__` attributes is :class:`C`. When it would yield a static
720 method object, it is transformed into the object wrapped by the static method
721 object. See section :ref:`descriptors` for another way in which attributes
722 retrieved from a class may differ from those actually contained in its
723 :attr:`__dict__`.
Georg Brandl116aa622007-08-15 14:28:22 +0000724
725 .. index:: triple: class; attribute; assignment
726
727 Class attribute assignments update the class's dictionary, never the dictionary
728 of a base class.
729
730 .. index:: pair: class object; call
731
732 A class object can be called (see above) to yield a class instance (see below).
733
734 .. index::
735 single: __name__ (class attribute)
736 single: __module__ (class attribute)
737 single: __dict__ (class attribute)
738 single: __bases__ (class attribute)
739 single: __doc__ (class attribute)
740
741 Special attributes: :attr:`__name__` is the class name; :attr:`__module__` is
742 the module name in which the class was defined; :attr:`__dict__` is the
743 dictionary containing the class's namespace; :attr:`__bases__` is a tuple
744 (possibly empty or a singleton) containing the base classes, in the order of
745 their occurrence in the base class list; :attr:`__doc__` is the class's
746 documentation string, or None if undefined.
747
748Class instances
749 .. index::
750 object: class instance
751 object: instance
752 pair: class; instance
753 pair: class instance; attribute
754
Georg Brandl2e0b7552007-11-27 12:43:08 +0000755 A class instance is created by calling a class object (see above). A class
756 instance has a namespace implemented as a dictionary which is the first place
757 in which attribute references are searched. When an attribute is not found
758 there, and the instance's class has an attribute by that name, the search
759 continues with the class attributes. If a class attribute is found that is a
760 user-defined function object, it is transformed into an instance method
761 object whose :attr:`__self__` attribute is the instance. Static method and
762 class method objects are also transformed; see above under "Classes". See
763 section :ref:`descriptors` for another way in which attributes of a class
764 retrieved via its instances may differ from the objects actually stored in
765 the class's :attr:`__dict__`. If no class attribute is found, and the
766 object's class has a :meth:`__getattr__` method, that is called to satisfy
767 the lookup.
Georg Brandl116aa622007-08-15 14:28:22 +0000768
769 .. index:: triple: class instance; attribute; assignment
770
771 Attribute assignments and deletions update the instance's dictionary, never a
772 class's dictionary. If the class has a :meth:`__setattr__` or
773 :meth:`__delattr__` method, this is called instead of updating the instance
774 dictionary directly.
775
776 .. index::
777 object: numeric
778 object: sequence
779 object: mapping
780
781 Class instances can pretend to be numbers, sequences, or mappings if they have
782 methods with certain special names. See section :ref:`specialnames`.
783
784 .. index::
785 single: __dict__ (instance attribute)
786 single: __class__ (instance attribute)
787
788 Special attributes: :attr:`__dict__` is the attribute dictionary;
789 :attr:`__class__` is the instance's class.
790
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000791I/O objects (also known as file objects)
Georg Brandl116aa622007-08-15 14:28:22 +0000792 .. index::
Georg Brandl116aa622007-08-15 14:28:22 +0000793 builtin: open
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000794 module: io
Georg Brandl116aa622007-08-15 14:28:22 +0000795 single: popen() (in module os)
796 single: makefile() (socket method)
797 single: sys.stdin
798 single: sys.stdout
799 single: sys.stderr
800 single: stdio
801 single: stdin (in module sys)
802 single: stdout (in module sys)
803 single: stderr (in module sys)
804
Antoine Pitrou0b65b0f2010-09-15 09:58:26 +0000805 A :term:`file object` represents an open file. Various shortcuts are
806 available to create file objects: the :func:`open` built-in function, and
807 also :func:`os.popen`, :func:`os.fdopen`, and the :meth:`makefile` method
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000808 of socket objects (and perhaps by other functions or methods provided
809 by extension modules).
810
811 The objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are
812 initialized to file objects corresponding to the interpreter's standard
813 input, output and error streams; they are all open in text mode and
814 therefore follow the interface defined by the :class:`io.TextIOBase`
815 abstract class.
Georg Brandl116aa622007-08-15 14:28:22 +0000816
817Internal types
818 .. index::
819 single: internal type
820 single: types, internal
821
822 A few types used internally by the interpreter are exposed to the user. Their
823 definitions may change with future versions of the interpreter, but they are
824 mentioned here for completeness.
825
826 Code objects
827 .. index::
828 single: bytecode
829 object: code
830
Georg Brandl9afde1c2007-11-01 20:32:30 +0000831 Code objects represent *byte-compiled* executable Python code, or :term:`bytecode`.
Georg Brandl116aa622007-08-15 14:28:22 +0000832 The difference between a code object and a function object is that the function
833 object contains an explicit reference to the function's globals (the module in
834 which it was defined), while a code object contains no context; also the default
835 argument values are stored in the function object, not in the code object
836 (because they represent values calculated at run-time). Unlike function
837 objects, code objects are immutable and contain no references (directly or
838 indirectly) to mutable objects.
839
Senthil Kumaran7cafd262010-10-02 03:16:04 +0000840 .. index::
841 single: co_argcount (code object attribute)
842 single: co_code (code object attribute)
843 single: co_consts (code object attribute)
844 single: co_filename (code object attribute)
845 single: co_firstlineno (code object attribute)
846 single: co_flags (code object attribute)
847 single: co_lnotab (code object attribute)
848 single: co_name (code object attribute)
849 single: co_names (code object attribute)
850 single: co_nlocals (code object attribute)
851 single: co_stacksize (code object attribute)
852 single: co_varnames (code object attribute)
853 single: co_cellvars (code object attribute)
854 single: co_freevars (code object attribute)
855
Georg Brandl116aa622007-08-15 14:28:22 +0000856 Special read-only attributes: :attr:`co_name` gives the function name;
857 :attr:`co_argcount` is the number of positional arguments (including arguments
858 with default values); :attr:`co_nlocals` is the number of local variables used
859 by the function (including arguments); :attr:`co_varnames` is a tuple containing
860 the names of the local variables (starting with the argument names);
861 :attr:`co_cellvars` is a tuple containing the names of local variables that are
862 referenced by nested functions; :attr:`co_freevars` is a tuple containing the
863 names of free variables; :attr:`co_code` is a string representing the sequence
864 of bytecode instructions; :attr:`co_consts` is a tuple containing the literals
865 used by the bytecode; :attr:`co_names` is a tuple containing the names used by
866 the bytecode; :attr:`co_filename` is the filename from which the code was
867 compiled; :attr:`co_firstlineno` is the first line number of the function;
Georg Brandl9afde1c2007-11-01 20:32:30 +0000868 :attr:`co_lnotab` is a string encoding the mapping from bytecode offsets to
Georg Brandl116aa622007-08-15 14:28:22 +0000869 line numbers (for details see the source code of the interpreter);
870 :attr:`co_stacksize` is the required stack size (including local variables);
871 :attr:`co_flags` is an integer encoding a number of flags for the interpreter.
872
Georg Brandl116aa622007-08-15 14:28:22 +0000873 .. index:: object: generator
874
875 The following flag bits are defined for :attr:`co_flags`: bit ``0x04`` is set if
876 the function uses the ``*arguments`` syntax to accept an arbitrary number of
877 positional arguments; bit ``0x08`` is set if the function uses the
878 ``**keywords`` syntax to accept arbitrary keyword arguments; bit ``0x20`` is set
879 if the function is a generator.
880
881 Future feature declarations (``from __future__ import division``) also use bits
882 in :attr:`co_flags` to indicate whether a code object was compiled with a
883 particular feature enabled: bit ``0x2000`` is set if the function was compiled
884 with future division enabled; bits ``0x10`` and ``0x1000`` were used in earlier
885 versions of Python.
886
887 Other bits in :attr:`co_flags` are reserved for internal use.
888
889 .. index:: single: documentation string
890
891 If a code object represents a function, the first item in :attr:`co_consts` is
892 the documentation string of the function, or ``None`` if undefined.
893
Georg Brandla6053b42009-09-01 08:11:14 +0000894 .. _frame-objects:
895
Georg Brandl116aa622007-08-15 14:28:22 +0000896 Frame objects
897 .. index:: object: frame
898
899 Frame objects represent execution frames. They may occur in traceback objects
900 (see below).
901
902 .. index::
903 single: f_back (frame attribute)
904 single: f_code (frame attribute)
905 single: f_globals (frame attribute)
906 single: f_locals (frame attribute)
907 single: f_lasti (frame attribute)
908 single: f_builtins (frame attribute)
909
910 Special read-only attributes: :attr:`f_back` is to the previous stack frame
911 (towards the caller), or ``None`` if this is the bottom stack frame;
912 :attr:`f_code` is the code object being executed in this frame; :attr:`f_locals`
913 is the dictionary used to look up local variables; :attr:`f_globals` is used for
914 global variables; :attr:`f_builtins` is used for built-in (intrinsic) names;
915 :attr:`f_lasti` gives the precise instruction (this is an index into the
916 bytecode string of the code object).
917
918 .. index::
919 single: f_trace (frame attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000920 single: f_lineno (frame attribute)
921
922 Special writable attributes: :attr:`f_trace`, if not ``None``, is a function
923 called at the start of each source code line (this is used by the debugger);
Benjamin Petersoneec3d712008-06-11 15:59:43 +0000924 :attr:`f_lineno` is the current line number of the frame --- writing to this
925 from within a trace function jumps to the given line (only for the bottom-most
926 frame). A debugger can implement a Jump command (aka Set Next Statement)
927 by writing to f_lineno.
Georg Brandl116aa622007-08-15 14:28:22 +0000928
929 Traceback objects
930 .. index::
931 object: traceback
932 pair: stack; trace
933 pair: exception; handler
934 pair: execution; stack
935 single: exc_info (in module sys)
Georg Brandl116aa622007-08-15 14:28:22 +0000936 single: last_traceback (in module sys)
937 single: sys.exc_info
938 single: sys.last_traceback
939
940 Traceback objects represent a stack trace of an exception. A traceback object
941 is created when an exception occurs. When the search for an exception handler
942 unwinds the execution stack, at each unwound level a traceback object is
943 inserted in front of the current traceback. When an exception handler is
944 entered, the stack trace is made available to the program. (See section
945 :ref:`try`.) It is accessible as the third item of the
946 tuple returned by ``sys.exc_info()``. When the program contains no suitable
947 handler, the stack trace is written (nicely formatted) to the standard error
948 stream; if the interpreter is interactive, it is also made available to the user
949 as ``sys.last_traceback``.
950
951 .. index::
952 single: tb_next (traceback attribute)
953 single: tb_frame (traceback attribute)
954 single: tb_lineno (traceback attribute)
955 single: tb_lasti (traceback attribute)
956 statement: try
957
958 Special read-only attributes: :attr:`tb_next` is the next level in the stack
959 trace (towards the frame where the exception occurred), or ``None`` if there is
960 no next level; :attr:`tb_frame` points to the execution frame of the current
961 level; :attr:`tb_lineno` gives the line number where the exception occurred;
962 :attr:`tb_lasti` indicates the precise instruction. The line number and last
963 instruction in the traceback may differ from the line number of its frame object
964 if the exception occurred in a :keyword:`try` statement with no matching except
965 clause or with a finally clause.
966
967 Slice objects
968 .. index:: builtin: slice
969
Georg Brandlcb8ecb12007-09-04 06:35:14 +0000970 Slice objects are used to represent slices for :meth:`__getitem__`
971 methods. They are also created by the built-in :func:`slice` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000972
973 .. index::
974 single: start (slice object attribute)
975 single: stop (slice object attribute)
976 single: step (slice object attribute)
977
978 Special read-only attributes: :attr:`start` is the lower bound; :attr:`stop` is
979 the upper bound; :attr:`step` is the step value; each is ``None`` if omitted.
980 These attributes can have any type.
981
982 Slice objects support one method:
983
Georg Brandl116aa622007-08-15 14:28:22 +0000984 .. method:: slice.indices(self, length)
985
Georg Brandlcb8ecb12007-09-04 06:35:14 +0000986 This method takes a single integer argument *length* and computes
987 information about the slice that the slice object would describe if
988 applied to a sequence of *length* items. It returns a tuple of three
989 integers; respectively these are the *start* and *stop* indices and the
990 *step* or stride length of the slice. Missing or out-of-bounds indices
991 are handled in a manner consistent with regular slices.
Georg Brandl116aa622007-08-15 14:28:22 +0000992
Georg Brandl116aa622007-08-15 14:28:22 +0000993 Static method objects
994 Static method objects provide a way of defeating the transformation of function
995 objects to method objects described above. A static method object is a wrapper
996 around any other object, usually a user-defined method object. When a static
997 method object is retrieved from a class or a class instance, the object actually
998 returned is the wrapped object, which is not subject to any further
999 transformation. Static method objects are not themselves callable, although the
1000 objects they wrap usually are. Static method objects are created by the built-in
1001 :func:`staticmethod` constructor.
1002
1003 Class method objects
1004 A class method object, like a static method object, is a wrapper around another
1005 object that alters the way in which that object is retrieved from classes and
1006 class instances. The behaviour of class method objects upon such retrieval is
1007 described above, under "User-defined methods". Class method objects are created
1008 by the built-in :func:`classmethod` constructor.
1009
Georg Brandl116aa622007-08-15 14:28:22 +00001010
Georg Brandl116aa622007-08-15 14:28:22 +00001011.. _specialnames:
1012
1013Special method names
1014====================
1015
1016.. index::
1017 pair: operator; overloading
1018 single: __getitem__() (mapping object method)
1019
1020A class can implement certain operations that are invoked by special syntax
1021(such as arithmetic operations or subscripting and slicing) by defining methods
1022with special names. This is Python's approach to :dfn:`operator overloading`,
1023allowing classes to define their own behavior with respect to language
1024operators. For instance, if a class defines a method named :meth:`__getitem__`,
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00001025and ``x`` is an instance of this class, then ``x[i]`` is roughly equivalent
1026to ``type(x).__getitem__(x, i)``. Except where mentioned, attempts to execute an
1027operation raise an exception when no appropriate method is defined (typically
1028:exc:`AttributeError` or :exc:`TypeError`).
Georg Brandl65ea9bd2007-09-05 13:36:27 +00001029
Georg Brandl116aa622007-08-15 14:28:22 +00001030When implementing a class that emulates any built-in type, it is important that
1031the emulation only be implemented to the degree that it makes sense for the
1032object being modelled. For example, some sequences may work well with retrieval
1033of individual elements, but extracting a slice may not make sense. (One example
1034of this is the :class:`NodeList` interface in the W3C's Document Object Model.)
1035
1036
1037.. _customization:
1038
1039Basic customization
1040-------------------
1041
Georg Brandl116aa622007-08-15 14:28:22 +00001042.. method:: object.__new__(cls[, ...])
1043
Georg Brandlaf265f42008-12-07 15:06:20 +00001044 .. index:: pair: subclassing; immutable types
1045
Georg Brandl116aa622007-08-15 14:28:22 +00001046 Called to create a new instance of class *cls*. :meth:`__new__` is a static
1047 method (special-cased so you need not declare it as such) that takes the class
1048 of which an instance was requested as its first argument. The remaining
1049 arguments are those passed to the object constructor expression (the call to the
1050 class). The return value of :meth:`__new__` should be the new object instance
1051 (usually an instance of *cls*).
1052
1053 Typical implementations create a new instance of the class by invoking the
1054 superclass's :meth:`__new__` method using ``super(currentclass,
1055 cls).__new__(cls[, ...])`` with appropriate arguments and then modifying the
1056 newly-created instance as necessary before returning it.
1057
1058 If :meth:`__new__` returns an instance of *cls*, then the new instance's
1059 :meth:`__init__` method will be invoked like ``__init__(self[, ...])``, where
1060 *self* is the new instance and the remaining arguments are the same as were
1061 passed to :meth:`__new__`.
1062
1063 If :meth:`__new__` does not return an instance of *cls*, then the new instance's
1064 :meth:`__init__` method will not be invoked.
1065
1066 :meth:`__new__` is intended mainly to allow subclasses of immutable types (like
Christian Heimes790c8232008-01-07 21:14:23 +00001067 int, str, or tuple) to customize instance creation. It is also commonly
1068 overridden in custom metaclasses in order to customize class creation.
Georg Brandl116aa622007-08-15 14:28:22 +00001069
1070
1071.. method:: object.__init__(self[, ...])
1072
1073 .. index:: pair: class; constructor
1074
1075 Called when the instance is created. The arguments are those passed to the
1076 class constructor expression. If a base class has an :meth:`__init__` method,
1077 the derived class's :meth:`__init__` method, if any, must explicitly call it to
1078 ensure proper initialization of the base class part of the instance; for
1079 example: ``BaseClass.__init__(self, [args...])``. As a special constraint on
1080 constructors, no value may be returned; doing so will cause a :exc:`TypeError`
1081 to be raised at runtime.
1082
1083
1084.. method:: object.__del__(self)
1085
1086 .. index::
1087 single: destructor
1088 statement: del
1089
1090 Called when the instance is about to be destroyed. This is also called a
1091 destructor. If a base class has a :meth:`__del__` method, the derived class's
1092 :meth:`__del__` method, if any, must explicitly call it to ensure proper
1093 deletion of the base class part of the instance. Note that it is possible
1094 (though not recommended!) for the :meth:`__del__` method to postpone destruction
1095 of the instance by creating a new reference to it. It may then be called at a
1096 later time when this new reference is deleted. It is not guaranteed that
1097 :meth:`__del__` methods are called for objects that still exist when the
1098 interpreter exits.
1099
1100 .. note::
1101
1102 ``del x`` doesn't directly call ``x.__del__()`` --- the former decrements
1103 the reference count for ``x`` by one, and the latter is only called when
1104 ``x``'s reference count reaches zero. Some common situations that may
1105 prevent the reference count of an object from going to zero include:
1106 circular references between objects (e.g., a doubly-linked list or a tree
1107 data structure with parent and child pointers); a reference to the object
1108 on the stack frame of a function that caught an exception (the traceback
1109 stored in ``sys.exc_info()[2]`` keeps the stack frame alive); or a
1110 reference to the object on the stack frame that raised an unhandled
1111 exception in interactive mode (the traceback stored in
1112 ``sys.last_traceback`` keeps the stack frame alive). The first situation
1113 can only be remedied by explicitly breaking the cycles; the latter two
1114 situations can be resolved by storing ``None`` in ``sys.last_traceback``.
1115 Circular references which are garbage are detected when the option cycle
1116 detector is enabled (it's on by default), but can only be cleaned up if
1117 there are no Python- level :meth:`__del__` methods involved. Refer to the
1118 documentation for the :mod:`gc` module for more information about how
1119 :meth:`__del__` methods are handled by the cycle detector, particularly
1120 the description of the ``garbage`` value.
1121
1122 .. warning::
1123
1124 Due to the precarious circumstances under which :meth:`__del__` methods are
1125 invoked, exceptions that occur during their execution are ignored, and a warning
1126 is printed to ``sys.stderr`` instead. Also, when :meth:`__del__` is invoked in
1127 response to a module being deleted (e.g., when execution of the program is
1128 done), other globals referenced by the :meth:`__del__` method may already have
Brett Cannone1327f72009-01-29 04:10:21 +00001129 been deleted or in the process of being torn down (e.g. the import
1130 machinery shutting down). For this reason, :meth:`__del__` methods
1131 should do the absolute
Georg Brandl116aa622007-08-15 14:28:22 +00001132 minimum needed to maintain external invariants. Starting with version 1.5,
1133 Python guarantees that globals whose name begins with a single underscore are
1134 deleted from their module before other globals are deleted; if no other
1135 references to such globals exist, this may help in assuring that imported
1136 modules are still available at the time when the :meth:`__del__` method is
1137 called.
1138
1139
1140.. method:: object.__repr__(self)
1141
1142 .. index:: builtin: repr
1143
Benjamin Peterson1c9313f2008-10-12 12:51:12 +00001144 Called by the :func:`repr` built-in function to compute the "official" string
1145 representation of an object. If at all possible, this should look like a
1146 valid Python expression that could be used to recreate an object with the
1147 same value (given an appropriate environment). If this is not possible, a
1148 string of the form ``<...some useful description...>`` should be returned.
1149 The return value must be a string object. If a class defines :meth:`__repr__`
1150 but not :meth:`__str__`, then :meth:`__repr__` is also used when an
1151 "informal" string representation of instances of that class is required.
Georg Brandl116aa622007-08-15 14:28:22 +00001152
Georg Brandl116aa622007-08-15 14:28:22 +00001153 This is typically used for debugging, so it is important that the representation
1154 is information-rich and unambiguous.
1155
1156
1157.. method:: object.__str__(self)
1158
1159 .. index::
1160 builtin: str
Georg Brandl4b491312007-08-31 09:22:56 +00001161 builtin: print
Georg Brandl116aa622007-08-15 14:28:22 +00001162
Georg Brandldcc56f82007-08-31 16:41:12 +00001163 Called by the :func:`str` built-in function and by the :func:`print` function
1164 to compute the "informal" string representation of an object. This differs
1165 from :meth:`__repr__` in that it does not have to be a valid Python
Georg Brandl116aa622007-08-15 14:28:22 +00001166 expression: a more convenient or concise representation may be used instead.
1167 The return value must be a string object.
1168
Georg Brandldcc56f82007-08-31 16:41:12 +00001169 .. XXX what about subclasses of string?
1170
Georg Brandl116aa622007-08-15 14:28:22 +00001171
Benjamin Peterson1fafc1a2011-10-25 00:03:51 -04001172.. method:: object.__bytes__(self)
1173
1174 .. index:: builtin: bytes
1175
1176 Called by :func:`bytes` to compute a byte-string representation of an
1177 object. This should return a ``bytes`` object.
1178
1179
Georg Brandl4b491312007-08-31 09:22:56 +00001180.. method:: object.__format__(self, format_spec)
1181
1182 .. index::
1183 pair: string; conversion
1184 builtin: str
1185 builtin: print
1186
1187 Called by the :func:`format` built-in function (and by extension, the
1188 :meth:`format` method of class :class:`str`) to produce a "formatted"
1189 string representation of an object. The ``format_spec`` argument is
1190 a string that contains a description of the formatting options desired.
1191 The interpretation of the ``format_spec`` argument is up to the type
1192 implementing :meth:`__format__`, however most classes will either
1193 delegate formatting to one of the built-in types, or use a similar
1194 formatting option syntax.
Georg Brandl48310cd2009-01-03 21:18:54 +00001195
Georg Brandl4b491312007-08-31 09:22:56 +00001196 See :ref:`formatspec` for a description of the standard formatting syntax.
1197
1198 The return value must be a string object.
1199
1200
Georg Brandl33413cb2009-03-31 19:06:37 +00001201.. _richcmpfuncs:
Georg Brandl116aa622007-08-15 14:28:22 +00001202.. method:: object.__lt__(self, other)
1203 object.__le__(self, other)
1204 object.__eq__(self, other)
1205 object.__ne__(self, other)
1206 object.__gt__(self, other)
1207 object.__ge__(self, other)
1208
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001209 .. index::
1210 single: comparisons
1211
Georg Brandl05f5ab72008-09-24 09:11:47 +00001212 These are the so-called "rich comparison" methods. The correspondence between
Georg Brandl116aa622007-08-15 14:28:22 +00001213 operator symbols and method names is as follows: ``x<y`` calls ``x.__lt__(y)``,
1214 ``x<=y`` calls ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` calls
1215 ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` calls
1216 ``x.__ge__(y)``.
1217
1218 A rich comparison method may return the singleton ``NotImplemented`` if it does
1219 not implement the operation for a given pair of arguments. By convention,
1220 ``False`` and ``True`` are returned for a successful comparison. However, these
1221 methods can return any value, so if the comparison operator is used in a Boolean
1222 context (e.g., in the condition of an ``if`` statement), Python will call
1223 :func:`bool` on the value to determine if the result is true or false.
1224
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001225 There are no implied relationships among the comparison operators. The truth
1226 of ``x==y`` does not imply that ``x!=y`` is false. Accordingly, when
1227 defining :meth:`__eq__`, one should also define :meth:`__ne__` so that the
1228 operators will behave as expected. See the paragraph on :meth:`__hash__` for
1229 some important notes on creating :term:`hashable` objects which support
1230 custom comparison operations and are usable as dictionary keys.
Georg Brandl116aa622007-08-15 14:28:22 +00001231
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001232 There are no swapped-argument versions of these methods (to be used when the
1233 left argument does not support the operation but the right argument does);
1234 rather, :meth:`__lt__` and :meth:`__gt__` are each other's reflection,
Georg Brandl116aa622007-08-15 14:28:22 +00001235 :meth:`__le__` and :meth:`__ge__` are each other's reflection, and
1236 :meth:`__eq__` and :meth:`__ne__` are their own reflection.
1237
1238 Arguments to rich comparison methods are never coerced.
1239
Raymond Hettinger6c4b4b22009-03-12 00:25:29 +00001240 To automatically generate ordering operations from a single root operation,
Raymond Hettingerc50846a2010-04-05 18:56:31 +00001241 see :func:`functools.total_ordering`.
Georg Brandl116aa622007-08-15 14:28:22 +00001242
Georg Brandl116aa622007-08-15 14:28:22 +00001243.. method:: object.__hash__(self)
1244
1245 .. index::
1246 object: dictionary
1247 builtin: hash
1248
Benjamin Peterson6cadba72008-11-19 22:38:29 +00001249 Called by built-in function :func:`hash` and for operations on members of
1250 hashed collections including :class:`set`, :class:`frozenset`, and
1251 :class:`dict`. :meth:`__hash__` should return an integer. The only required
1252 property is that objects which compare equal have the same hash value; it is
1253 advised to somehow mix together (e.g. using exclusive or) the hash values for
1254 the components of the object that also play a part in comparison of objects.
Georg Brandl116aa622007-08-15 14:28:22 +00001255
Georg Brandl05f5ab72008-09-24 09:11:47 +00001256 If a class does not define an :meth:`__eq__` method it should not define a
1257 :meth:`__hash__` operation either; if it defines :meth:`__eq__` but not
Benjamin Peterson6cadba72008-11-19 22:38:29 +00001258 :meth:`__hash__`, its instances will not be usable as items in hashable
1259 collections. If a class defines mutable objects and implements an
1260 :meth:`__eq__` method, it should not implement :meth:`__hash__`, since the
1261 implementation of hashable collections requires that a key's hash value is
1262 immutable (if the object's hash value changes, it will be in the wrong hash
1263 bucket).
1264
Georg Brandldb629672007-11-03 08:44:43 +00001265
Georg Brandl05f5ab72008-09-24 09:11:47 +00001266 User-defined classes have :meth:`__eq__` and :meth:`__hash__` methods
Nick Coghlan73c96db2008-08-31 13:21:24 +00001267 by default; with them, all objects compare unequal (except with themselves)
Nick Coghlan337b2bf2012-05-20 18:30:49 +10001268 and ``x.__hash__()`` returns an appropriate value such that ``x == y``
1269 implies both that ``x is y`` and ``hash(x) == hash(y)``.
1270
1271 .. impl-detail::
1272
1273 CPython uses ``hash(id(x))`` as the default hash for class instances.
Georg Brandl116aa622007-08-15 14:28:22 +00001274
Nick Coghlan73c96db2008-08-31 13:21:24 +00001275 Classes which inherit a :meth:`__hash__` method from a parent class but
Georg Brandl05f5ab72008-09-24 09:11:47 +00001276 change the meaning of :meth:`__eq__` such that the hash value returned is no
1277 longer appropriate (e.g. by switching to a value-based concept of equality
1278 instead of the default identity based equality) can explicitly flag
1279 themselves as being unhashable by setting ``__hash__ = None`` in the class
1280 definition. Doing so means that not only will instances of the class raise an
1281 appropriate :exc:`TypeError` when a program attempts to retrieve their hash
1282 value, but they will also be correctly identified as unhashable when checking
1283 ``isinstance(obj, collections.Hashable)`` (unlike classes which define their
1284 own :meth:`__hash__` to explicitly raise :exc:`TypeError`).
Nick Coghlan73c96db2008-08-31 13:21:24 +00001285
Georg Brandlae2dbe22009-03-13 19:04:40 +00001286 If a class that overrides :meth:`__eq__` needs to retain the implementation
Georg Brandl05f5ab72008-09-24 09:11:47 +00001287 of :meth:`__hash__` from a parent class, the interpreter must be told this
1288 explicitly by setting ``__hash__ = <ParentClass>.__hash__``. Otherwise the
1289 inheritance of :meth:`__hash__` will be blocked, just as if :attr:`__hash__`
1290 had been explicitly set to :const:`None`.
1291
Benjamin Petersonc9f54cf2012-02-21 16:08:05 -05001292
1293 .. note::
1294
1295 Note by default the :meth:`__hash__` values of str, bytes and datetime
1296 objects are "salted" with an unpredictable random value. Although they
1297 remain constant within an individual Python process, they are not
1298 predictable between repeated invocations of Python.
1299
1300 This is intended to provide protection against a denial-of-service caused
1301 by carefully-chosen inputs that exploit the worst case performance of a
1302 dict insertion, O(n^2) complexity. See
1303 http://www.ocert.org/advisories/ocert-2011-003.html for details.
1304
1305 Changing hash values affects the order in which keys are retrieved from a
Benjamin Petersonb43fde92012-02-21 18:03:26 -05001306 dict. Note Python has never made guarantees about this ordering (and it
1307 typically varies between 32-bit and 64-bit builds).
Benjamin Petersonc9f54cf2012-02-21 16:08:05 -05001308
1309 See also :envvar:`PYTHONHASHSEED`.
1310
1311 .. versionchanged:: 3.3
1312 Hash randomization is enabled by default.
Georg Brandl2daf6ae2012-02-20 19:54:16 +01001313
Georg Brandl116aa622007-08-15 14:28:22 +00001314
1315.. method:: object.__bool__(self)
Georg Brandl1aeaadd2008-09-06 17:42:52 +00001316
Georg Brandl116aa622007-08-15 14:28:22 +00001317 .. index:: single: __len__() (mapping object method)
1318
Benjamin Petersonf07d0022009-03-21 17:31:58 +00001319 Called to implement truth value testing and the built-in operation
Amaury Forgeot d'Arc097cd072009-07-07 00:43:08 +00001320 ``bool()``; should return ``False`` or ``True``. When this method is not
1321 defined, :meth:`__len__` is called, if it is defined, and the object is
1322 considered true if its result is nonzero. If a class defines neither
1323 :meth:`__len__` nor :meth:`__bool__`, all its instances are considered
1324 true.
Georg Brandl116aa622007-08-15 14:28:22 +00001325
1326
Georg Brandl116aa622007-08-15 14:28:22 +00001327.. _attribute-access:
1328
1329Customizing attribute access
1330----------------------------
1331
1332The following methods can be defined to customize the meaning of attribute
1333access (use of, assignment to, or deletion of ``x.name``) for class instances.
1334
Georg Brandl85eb8c12007-08-31 16:33:38 +00001335.. XXX explain how descriptors interfere here!
1336
Georg Brandl116aa622007-08-15 14:28:22 +00001337
1338.. method:: object.__getattr__(self, name)
1339
1340 Called when an attribute lookup has not found the attribute in the usual places
1341 (i.e. it is not an instance attribute nor is it found in the class tree for
1342 ``self``). ``name`` is the attribute name. This method should return the
1343 (computed) attribute value or raise an :exc:`AttributeError` exception.
1344
Georg Brandl116aa622007-08-15 14:28:22 +00001345 Note that if the attribute is found through the normal mechanism,
1346 :meth:`__getattr__` is not called. (This is an intentional asymmetry between
1347 :meth:`__getattr__` and :meth:`__setattr__`.) This is done both for efficiency
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00001348 reasons and because otherwise :meth:`__getattr__` would have no way to access
Georg Brandl116aa622007-08-15 14:28:22 +00001349 other attributes of the instance. Note that at least for instance variables,
1350 you can fake total control by not inserting any values in the instance attribute
1351 dictionary (but instead inserting them in another object). See the
Georg Brandl85eb8c12007-08-31 16:33:38 +00001352 :meth:`__getattribute__` method below for a way to actually get total control
1353 over attribute access.
Georg Brandl116aa622007-08-15 14:28:22 +00001354
1355
1356.. method:: object.__getattribute__(self, name)
1357
1358 Called unconditionally to implement attribute accesses for instances of the
1359 class. If the class also defines :meth:`__getattr__`, the latter will not be
1360 called unless :meth:`__getattribute__` either calls it explicitly or raises an
1361 :exc:`AttributeError`. This method should return the (computed) attribute value
1362 or raise an :exc:`AttributeError` exception. In order to avoid infinite
1363 recursion in this method, its implementation should always call the base class
1364 method with the same name to access any attributes it needs, for example,
1365 ``object.__getattribute__(self, name)``.
1366
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00001367 .. note::
1368
1369 This method may still be bypassed when looking up special methods as the
Georg Brandl22b34312009-07-26 14:54:51 +00001370 result of implicit invocation via language syntax or built-in functions.
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00001371 See :ref:`special-lookup`.
1372
Georg Brandl116aa622007-08-15 14:28:22 +00001373
Georg Brandl85eb8c12007-08-31 16:33:38 +00001374.. method:: object.__setattr__(self, name, value)
1375
1376 Called when an attribute assignment is attempted. This is called instead of
1377 the normal mechanism (i.e. store the value in the instance dictionary).
1378 *name* is the attribute name, *value* is the value to be assigned to it.
1379
1380 If :meth:`__setattr__` wants to assign to an instance attribute, it should
1381 call the base class method with the same name, for example,
1382 ``object.__setattr__(self, name, value)``.
1383
1384
1385.. method:: object.__delattr__(self, name)
1386
1387 Like :meth:`__setattr__` but for attribute deletion instead of assignment. This
1388 should only be implemented if ``del obj.name`` is meaningful for the object.
1389
1390
Benjamin Peterson1cef37c2008-07-02 14:44:54 +00001391.. method:: object.__dir__(self)
1392
Benjamin Peterson3bbb7222011-06-11 16:12:08 -05001393 Called when :func:`dir` is called on the object. A sequence must be
1394 returned. :func:`dir` converts the returned sequence to a list and sorts it.
Benjamin Peterson1cef37c2008-07-02 14:44:54 +00001395
1396
Georg Brandl116aa622007-08-15 14:28:22 +00001397.. _descriptors:
1398
1399Implementing Descriptors
1400^^^^^^^^^^^^^^^^^^^^^^^^
1401
1402The following methods only apply when an instance of the class containing the
Raymond Hettinger3b654be2011-03-22 16:27:02 -07001403method (a so-called *descriptor* class) appears in an *owner* class (the
1404descriptor must be in either the owner's class dictionary or in the class
1405dictionary for one of its parents). In the examples below, "the attribute"
1406refers to the attribute whose name is the key of the property in the owner
1407class' :attr:`__dict__`.
Georg Brandl116aa622007-08-15 14:28:22 +00001408
1409
1410.. method:: object.__get__(self, instance, owner)
1411
1412 Called to get the attribute of the owner class (class attribute access) or of an
1413 instance of that class (instance attribute access). *owner* is always the owner
1414 class, while *instance* is the instance that the attribute was accessed through,
1415 or ``None`` when the attribute is accessed through the *owner*. This method
1416 should return the (computed) attribute value or raise an :exc:`AttributeError`
1417 exception.
1418
1419
1420.. method:: object.__set__(self, instance, value)
1421
1422 Called to set the attribute on an instance *instance* of the owner class to a
1423 new value, *value*.
1424
1425
1426.. method:: object.__delete__(self, instance)
1427
1428 Called to delete the attribute on an instance *instance* of the owner class.
1429
1430
1431.. _descriptor-invocation:
1432
1433Invoking Descriptors
1434^^^^^^^^^^^^^^^^^^^^
1435
1436In general, a descriptor is an object attribute with "binding behavior", one
1437whose attribute access has been overridden by methods in the descriptor
1438protocol: :meth:`__get__`, :meth:`__set__`, and :meth:`__delete__`. If any of
1439those methods are defined for an object, it is said to be a descriptor.
1440
1441The default behavior for attribute access is to get, set, or delete the
1442attribute from an object's dictionary. For instance, ``a.x`` has a lookup chain
1443starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and
1444continuing through the base classes of ``type(a)`` excluding metaclasses.
1445
1446However, if the looked-up value is an object defining one of the descriptor
1447methods, then Python may override the default behavior and invoke the descriptor
1448method instead. Where this occurs in the precedence chain depends on which
Georg Brandl23e8db52008-04-07 19:17:06 +00001449descriptor methods were defined and how they were called.
Georg Brandl116aa622007-08-15 14:28:22 +00001450
1451The starting point for descriptor invocation is a binding, ``a.x``. How the
1452arguments are assembled depends on ``a``:
1453
1454Direct Call
1455 The simplest and least common call is when user code directly invokes a
1456 descriptor method: ``x.__get__(a)``.
1457
1458Instance Binding
Georg Brandl85eb8c12007-08-31 16:33:38 +00001459 If binding to an object instance, ``a.x`` is transformed into the call:
Georg Brandl116aa622007-08-15 14:28:22 +00001460 ``type(a).__dict__['x'].__get__(a, type(a))``.
1461
1462Class Binding
Georg Brandl85eb8c12007-08-31 16:33:38 +00001463 If binding to a class, ``A.x`` is transformed into the call:
Georg Brandl116aa622007-08-15 14:28:22 +00001464 ``A.__dict__['x'].__get__(None, A)``.
1465
1466Super Binding
1467 If ``a`` is an instance of :class:`super`, then the binding ``super(B,
1468 obj).m()`` searches ``obj.__class__.__mro__`` for the base class ``A``
1469 immediately preceding ``B`` and then invokes the descriptor with the call:
Raymond Hettingerb199b222011-03-22 15:28:45 -07001470 ``A.__dict__['m'].__get__(obj, obj.__class__)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001471
1472For instance bindings, the precedence of descriptor invocation depends on the
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001473which descriptor methods are defined. A descriptor can define any combination
1474of :meth:`__get__`, :meth:`__set__` and :meth:`__delete__`. If it does not
1475define :meth:`__get__`, then accessing the attribute will return the descriptor
1476object itself unless there is a value in the object's instance dictionary. If
1477the descriptor defines :meth:`__set__` and/or :meth:`__delete__`, it is a data
1478descriptor; if it defines neither, it is a non-data descriptor. Normally, data
1479descriptors define both :meth:`__get__` and :meth:`__set__`, while non-data
1480descriptors have just the :meth:`__get__` method. Data descriptors with
1481:meth:`__set__` and :meth:`__get__` defined always override a redefinition in an
Georg Brandl116aa622007-08-15 14:28:22 +00001482instance dictionary. In contrast, non-data descriptors can be overridden by
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001483instances.
Georg Brandl116aa622007-08-15 14:28:22 +00001484
1485Python methods (including :func:`staticmethod` and :func:`classmethod`) are
1486implemented as non-data descriptors. Accordingly, instances can redefine and
1487override methods. This allows individual instances to acquire behaviors that
1488differ from other instances of the same class.
1489
1490The :func:`property` function is implemented as a data descriptor. Accordingly,
1491instances cannot override the behavior of a property.
1492
1493
1494.. _slots:
1495
1496__slots__
1497^^^^^^^^^
1498
Georg Brandl85eb8c12007-08-31 16:33:38 +00001499By default, instances of classes have a dictionary for attribute storage. This
1500wastes space for objects having very few instance variables. The space
1501consumption can become acute when creating large numbers of instances.
Georg Brandl116aa622007-08-15 14:28:22 +00001502
Georg Brandl85eb8c12007-08-31 16:33:38 +00001503The default can be overridden by defining *__slots__* in a class definition.
1504The *__slots__* declaration takes a sequence of instance variables and reserves
1505just enough space in each instance to hold a value for each variable. Space is
1506saved because *__dict__* is not created for each instance.
Georg Brandl116aa622007-08-15 14:28:22 +00001507
1508
Georg Brandl85eb8c12007-08-31 16:33:38 +00001509.. data:: object.__slots__
Georg Brandl116aa622007-08-15 14:28:22 +00001510
Georg Brandl85eb8c12007-08-31 16:33:38 +00001511 This class variable can be assigned a string, iterable, or sequence of
Georg Brandl23e8db52008-04-07 19:17:06 +00001512 strings with variable names used by instances. If defined in a
Georg Brandl85eb8c12007-08-31 16:33:38 +00001513 class, *__slots__* reserves space for the declared variables and prevents the
1514 automatic creation of *__dict__* and *__weakref__* for each instance.
Georg Brandl116aa622007-08-15 14:28:22 +00001515
Georg Brandl116aa622007-08-15 14:28:22 +00001516
1517Notes on using *__slots__*
Georg Brandl16174572007-09-01 12:38:06 +00001518""""""""""""""""""""""""""
Georg Brandl116aa622007-08-15 14:28:22 +00001519
Georg Brandl3dbca812008-07-23 16:10:53 +00001520* When inheriting from a class without *__slots__*, the *__dict__* attribute of
1521 that class will always be accessible, so a *__slots__* definition in the
1522 subclass is meaningless.
1523
Georg Brandl116aa622007-08-15 14:28:22 +00001524* Without a *__dict__* variable, instances cannot be assigned new variables not
1525 listed in the *__slots__* definition. Attempts to assign to an unlisted
1526 variable name raises :exc:`AttributeError`. If dynamic assignment of new
Georg Brandl85eb8c12007-08-31 16:33:38 +00001527 variables is desired, then add ``'__dict__'`` to the sequence of strings in
1528 the *__slots__* declaration.
Georg Brandl116aa622007-08-15 14:28:22 +00001529
Georg Brandl116aa622007-08-15 14:28:22 +00001530* Without a *__weakref__* variable for each instance, classes defining
1531 *__slots__* do not support weak references to its instances. If weak reference
1532 support is needed, then add ``'__weakref__'`` to the sequence of strings in the
1533 *__slots__* declaration.
1534
Georg Brandl116aa622007-08-15 14:28:22 +00001535* *__slots__* are implemented at the class level by creating descriptors
1536 (:ref:`descriptors`) for each variable name. As a result, class attributes
1537 cannot be used to set default values for instance variables defined by
1538 *__slots__*; otherwise, the class attribute would overwrite the descriptor
1539 assignment.
1540
Georg Brandl495f7b52009-10-27 15:28:25 +00001541* The action of a *__slots__* declaration is limited to the class where it is
1542 defined. As a result, subclasses will have a *__dict__* unless they also define
1543 *__slots__* (which must only contain names of any *additional* slots).
1544
Georg Brandl116aa622007-08-15 14:28:22 +00001545* If a class defines a slot also defined in a base class, the instance variable
1546 defined by the base class slot is inaccessible (except by retrieving its
1547 descriptor directly from the base class). This renders the meaning of the
1548 program undefined. In the future, a check may be added to prevent this.
1549
Benjamin Peterson1a6e0d02008-10-25 15:49:17 +00001550* Nonempty *__slots__* does not work for classes derived from "variable-length"
1551 built-in types such as :class:`int`, :class:`str` and :class:`tuple`.
Georg Brandl116aa622007-08-15 14:28:22 +00001552
1553* Any non-string iterable may be assigned to *__slots__*. Mappings may also be
1554 used; however, in the future, special meaning may be assigned to the values
1555 corresponding to each key.
1556
1557* *__class__* assignment works only if both classes have the same *__slots__*.
1558
Georg Brandl116aa622007-08-15 14:28:22 +00001559
1560.. _metaclasses:
1561
1562Customizing class creation
1563--------------------------
1564
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001565By default, classes are constructed using :func:`type`. The class body is
1566executed in a new namespace and the class name is bound locally to the
1567result of ``type(name, bases, namespace)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001568
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001569The class creation process can be customised by passing the ``metaclass``
1570keyword argument in the class definition line, or by inheriting from an
1571existing class that included such an argument. In the following example,
1572both ``MyClass`` and ``MySubclass`` are instances of ``Meta``::
Georg Brandl116aa622007-08-15 14:28:22 +00001573
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001574 class Meta(type):
1575 pass
Georg Brandl116aa622007-08-15 14:28:22 +00001576
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001577 class MyClass(metaclass=Meta):
1578 pass
Georg Brandl116aa622007-08-15 14:28:22 +00001579
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001580 class MySubclass(MyClass):
1581 pass
Christian Heimes790c8232008-01-07 21:14:23 +00001582
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001583Any other keyword arguments that are specified in the class definition are
1584passed through to all metaclass operations described below.
Christian Heimes790c8232008-01-07 21:14:23 +00001585
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001586When a class definition is executed, the following steps occur:
Christian Heimes790c8232008-01-07 21:14:23 +00001587
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001588* the appropriate metaclass is determined
1589* the class namespace is prepared
1590* the class body is executed
1591* the class object is created
Georg Brandl116aa622007-08-15 14:28:22 +00001592
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001593Determining the appropriate metaclass
1594^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001595
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001596The appropriate metaclass for a class definition is determined as follows:
Georg Brandl116aa622007-08-15 14:28:22 +00001597
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001598* if no bases and no explicit metaclass are given, then :func:`type` is used
1599* if an explicit metaclass is given and it is *not* an instance of
1600 :func:`type`, then it is used directly as the metaclass
1601* if an instance of :func:`type` is given as the explicit metaclass, or
1602 bases are defined, then the most derived metaclass is used
Georg Brandl116aa622007-08-15 14:28:22 +00001603
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001604The most derived metaclass is selected from the explicitly specified
1605metaclass (if any) and the metaclasses (i.e. ``type(cls)``) of all specified
1606base classes. The most derived metaclass is one which is a subtype of *all*
1607of these candidate metaclasses. If none of the candidate metaclasses meets
1608that criterion, then the class definition will fail with ``TypeError``.
1609
1610
1611Preparing the class namespace
1612^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1613
1614Once the appropriate metaclass has been identified, then the class namespace
1615is prepared. If the metaclass has a ``__prepare__`` attribute, it is called
1616as ``namespace = metaclass.__prepare__(name, bases, **kwds)`` (where the
1617additional keyword arguments, if any, come from the class definition).
1618
1619If the metaclass has no ``__prepare__`` attribute, then the class namespace
1620is initialised as an empty :func:`dict` instance.
1621
1622.. seealso::
1623
1624 :pep:`3115` - Metaclasses in Python 3000
1625 Introduced the ``__prepare__`` namespace hook
1626
1627
1628Executing the class body
1629^^^^^^^^^^^^^^^^^^^^^^^^
1630
1631The class body is executed (approximately) as
1632``exec(body, globals(), namespace)``. The key difference from a normal
1633call to :func:`exec` is that lexical scoping allows the class body (including
1634any methods) to reference names from the current and outer scopes when the
1635class definition occurs inside a function.
1636
1637However, even when the class definition occurs inside the function, methods
1638defined inside the class still cannot see names defined at the class scope.
1639Class variables must be accessed through the first parameter of instance or
1640class methods, and cannot be accessed at all from static methods.
1641
1642
1643Creating the class object
1644^^^^^^^^^^^^^^^^^^^^^^^^^
1645
1646Once the class namespace has been populated by executing the class body,
1647the class object is created by calling
1648``metaclass(name, bases, namespace, **kwds)`` (the additional keywords
Nick Coghlan78770f02012-05-20 18:15:11 +10001649passed here are the same as those passed to ``__prepare__``).
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001650
1651This class object is the one that will be referenced by the zero-argument
1652form of :func:`super`. ``__class__`` is an implicit closure reference
1653created by the compiler if any methods in a class body refer to either
1654``__class__`` or ``super``. This allows the zero argument form of
1655:func:`super` to correctly identify the class being defined based on
1656lexical scoping, while the class or instance that was used to make the
1657current call is identified based on the first argument passed to the method.
1658
1659After the class object is created, any class decorators included in the
1660function definition are invoked and the resulting object is bound in the
1661local namespace to the name of the class.
1662
1663.. seealso::
1664
1665 :pep:`3135` - New super
1666 Describes the implicit ``__class__`` closure reference
1667
1668
1669Metaclass example
1670^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001671
1672The potential uses for metaclasses are boundless. Some ideas that have been
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001673explored include logging, interface checking, automatic delegation, automatic
Georg Brandl116aa622007-08-15 14:28:22 +00001674property creation, proxies, frameworks, and automatic resource
1675locking/synchronization.
1676
Raymond Hettinger15efcb62009-04-07 02:09:15 +00001677Here is an example of a metaclass that uses an :class:`collections.OrderedDict`
1678to remember the order that class members were defined::
Raymond Hettinger958e3682009-04-07 02:08:23 +00001679
1680 class OrderedClass(type):
1681
1682 @classmethod
1683 def __prepare__(metacls, name, bases, **kwds):
1684 return collections.OrderedDict()
1685
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001686 def __new__(cls, name, bases, namespace, **kwds):
1687 result = type.__new__(cls, name, bases, dict(namespace))
1688 result.members = tuple(namespace)
Raymond Hettinger958e3682009-04-07 02:08:23 +00001689 return result
1690
1691 class A(metaclass=OrderedClass):
1692 def one(self): pass
1693 def two(self): pass
1694 def three(self): pass
1695 def four(self): pass
1696
1697 >>> A.members
1698 ('__module__', 'one', 'two', 'three', 'four')
1699
Raymond Hettingerc4faeea2009-04-07 02:31:14 +00001700When the class definition for *A* gets executed, the process begins with
1701calling the metaclass's :meth:`__prepare__` method which returns an empty
Raymond Hettinger958e3682009-04-07 02:08:23 +00001702:class:`collections.OrderedDict`. That mapping records the methods and
1703attributes of *A* as they are defined within the body of the class statement.
Raymond Hettingerc4faeea2009-04-07 02:31:14 +00001704Once those definitions are executed, the ordered dictionary is fully populated
Hirokazu Yamamotoae9eb5c2009-04-26 03:34:06 +00001705and the metaclass's :meth:`__new__` method gets invoked. That method builds
Raymond Hettingerc4faeea2009-04-07 02:31:14 +00001706the new type and it saves the ordered dictionary keys in an attribute
Fred Drake11c49a52010-11-13 04:24:26 +00001707called ``members``.
Raymond Hettinger958e3682009-04-07 02:08:23 +00001708
Georg Brandl116aa622007-08-15 14:28:22 +00001709
Georg Brandl8569e582010-05-19 20:57:08 +00001710Customizing instance and subclass checks
1711----------------------------------------
1712
1713The following methods are used to override the default behavior of the
1714:func:`isinstance` and :func:`issubclass` built-in functions.
1715
1716In particular, the metaclass :class:`abc.ABCMeta` implements these methods in
1717order to allow the addition of Abstract Base Classes (ABCs) as "virtual base
Benjamin Petersond7c3ed52010-06-27 22:32:30 +00001718classes" to any class or type (including built-in types), including other
Georg Brandl8569e582010-05-19 20:57:08 +00001719ABCs.
1720
1721.. method:: class.__instancecheck__(self, instance)
1722
1723 Return true if *instance* should be considered a (direct or indirect)
1724 instance of *class*. If defined, called to implement ``isinstance(instance,
1725 class)``.
1726
1727
1728.. method:: class.__subclasscheck__(self, subclass)
1729
1730 Return true if *subclass* should be considered a (direct or indirect)
1731 subclass of *class*. If defined, called to implement ``issubclass(subclass,
1732 class)``.
1733
1734
1735Note that these methods are looked up on the type (metaclass) of a class. They
1736cannot be defined as class methods in the actual class. This is consistent with
Benjamin Petersond7c3ed52010-06-27 22:32:30 +00001737the lookup of special methods that are called on instances, only in this
Georg Brandl8569e582010-05-19 20:57:08 +00001738case the instance is itself a class.
1739
1740.. seealso::
1741
1742 :pep:`3119` - Introducing Abstract Base Classes
1743 Includes the specification for customizing :func:`isinstance` and
1744 :func:`issubclass` behavior through :meth:`__instancecheck__` and
1745 :meth:`__subclasscheck__`, with motivation for this functionality in the
1746 context of adding Abstract Base Classes (see the :mod:`abc` module) to the
1747 language.
1748
1749
Georg Brandl116aa622007-08-15 14:28:22 +00001750.. _callable-types:
1751
1752Emulating callable objects
1753--------------------------
1754
1755
1756.. method:: object.__call__(self[, args...])
1757
1758 .. index:: pair: call; instance
1759
1760 Called when the instance is "called" as a function; if this method is defined,
1761 ``x(arg1, arg2, ...)`` is a shorthand for ``x.__call__(arg1, arg2, ...)``.
1762
1763
1764.. _sequence-types:
1765
1766Emulating container types
1767-------------------------
1768
1769The following methods can be defined to implement container objects. Containers
1770usually are sequences (such as lists or tuples) or mappings (like dictionaries),
1771but can represent other containers as well. The first set of methods is used
1772either to emulate a sequence or to emulate a mapping; the difference is that for
1773a sequence, the allowable keys should be the integers *k* for which ``0 <= k <
1774N`` where *N* is the length of the sequence, or slice objects, which define a
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001775range of items. It is also recommended that mappings provide the methods
Georg Brandlc7723722008-05-26 17:47:11 +00001776:meth:`keys`, :meth:`values`, :meth:`items`, :meth:`get`, :meth:`clear`,
1777:meth:`setdefault`, :meth:`pop`, :meth:`popitem`, :meth:`copy`, and
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001778:meth:`update` behaving similar to those for Python's standard dictionary
Georg Brandlc7723722008-05-26 17:47:11 +00001779objects. The :mod:`collections` module provides a :class:`MutableMapping`
1780abstract base class to help create those methods from a base set of
1781:meth:`__getitem__`, :meth:`__setitem__`, :meth:`__delitem__`, and :meth:`keys`.
1782Mutable sequences should provide methods :meth:`append`, :meth:`count`,
1783:meth:`index`, :meth:`extend`, :meth:`insert`, :meth:`pop`, :meth:`remove`,
1784:meth:`reverse` and :meth:`sort`, like Python standard list objects. Finally,
1785sequence types should implement addition (meaning concatenation) and
1786multiplication (meaning repetition) by defining the methods :meth:`__add__`,
1787:meth:`__radd__`, :meth:`__iadd__`, :meth:`__mul__`, :meth:`__rmul__` and
1788:meth:`__imul__` described below; they should not define other numerical
1789operators. It is recommended that both mappings and sequences implement the
1790:meth:`__contains__` method to allow efficient use of the ``in`` operator; for
1791mappings, ``in`` should search the mapping's keys; for sequences, it should
1792search through the values. It is further recommended that both mappings and
1793sequences implement the :meth:`__iter__` method to allow efficient iteration
1794through the container; for mappings, :meth:`__iter__` should be the same as
Fred Drake2e748782007-09-04 17:33:11 +00001795:meth:`keys`; for sequences, it should iterate through the values.
Georg Brandl116aa622007-08-15 14:28:22 +00001796
1797.. method:: object.__len__(self)
1798
1799 .. index::
1800 builtin: len
1801 single: __bool__() (object method)
1802
1803 Called to implement the built-in function :func:`len`. Should return the length
1804 of the object, an integer ``>=`` 0. Also, an object that doesn't define a
1805 :meth:`__bool__` method and whose :meth:`__len__` method returns zero is
1806 considered to be false in a Boolean context.
1807
1808
Georg Brandlcb8ecb12007-09-04 06:35:14 +00001809.. note::
1810
1811 Slicing is done exclusively with the following three methods. A call like ::
1812
1813 a[1:2] = b
1814
1815 is translated to ::
1816
1817 a[slice(1, 2, None)] = b
1818
1819 and so forth. Missing slice items are always filled in with ``None``.
1820
1821
Georg Brandl116aa622007-08-15 14:28:22 +00001822.. method:: object.__getitem__(self, key)
1823
1824 .. index:: object: slice
1825
1826 Called to implement evaluation of ``self[key]``. For sequence types, the
1827 accepted keys should be integers and slice objects. Note that the special
1828 interpretation of negative indexes (if the class wishes to emulate a sequence
1829 type) is up to the :meth:`__getitem__` method. If *key* is of an inappropriate
1830 type, :exc:`TypeError` may be raised; if of a value outside the set of indexes
1831 for the sequence (after any special interpretation of negative values),
1832 :exc:`IndexError` should be raised. For mapping types, if *key* is missing (not
1833 in the container), :exc:`KeyError` should be raised.
1834
1835 .. note::
1836
1837 :keyword:`for` loops expect that an :exc:`IndexError` will be raised for illegal
1838 indexes to allow proper detection of the end of the sequence.
1839
1840
1841.. method:: object.__setitem__(self, key, value)
1842
1843 Called to implement assignment to ``self[key]``. Same note as for
1844 :meth:`__getitem__`. This should only be implemented for mappings if the
1845 objects support changes to the values for keys, or if new keys can be added, or
1846 for sequences if elements can be replaced. The same exceptions should be raised
1847 for improper *key* values as for the :meth:`__getitem__` method.
1848
1849
1850.. method:: object.__delitem__(self, key)
1851
1852 Called to implement deletion of ``self[key]``. Same note as for
1853 :meth:`__getitem__`. This should only be implemented for mappings if the
1854 objects support removal of keys, or for sequences if elements can be removed
1855 from the sequence. The same exceptions should be raised for improper *key*
1856 values as for the :meth:`__getitem__` method.
1857
1858
1859.. method:: object.__iter__(self)
1860
1861 This method is called when an iterator is required for a container. This method
1862 should return a new iterator object that can iterate over all the objects in the
1863 container. For mappings, it should iterate over the keys of the container, and
Fred Drake2e748782007-09-04 17:33:11 +00001864 should also be made available as the method :meth:`keys`.
Georg Brandl116aa622007-08-15 14:28:22 +00001865
1866 Iterator objects also need to implement this method; they are required to return
1867 themselves. For more information on iterator objects, see :ref:`typeiter`.
1868
Christian Heimes7f044312008-01-06 17:05:40 +00001869
1870.. method:: object.__reversed__(self)
1871
Georg Brandl22b34312009-07-26 14:54:51 +00001872 Called (if present) by the :func:`reversed` built-in to implement
Christian Heimes7f044312008-01-06 17:05:40 +00001873 reverse iteration. It should return a new iterator object that iterates
1874 over all the objects in the container in reverse order.
1875
Georg Brandl8a1e4c42009-05-25 21:13:36 +00001876 If the :meth:`__reversed__` method is not provided, the :func:`reversed`
Georg Brandl22b34312009-07-26 14:54:51 +00001877 built-in will fall back to using the sequence protocol (:meth:`__len__` and
Georg Brandl8a1e4c42009-05-25 21:13:36 +00001878 :meth:`__getitem__`). Objects that support the sequence protocol should
1879 only provide :meth:`__reversed__` if they can provide an implementation
1880 that is more efficient than the one provided by :func:`reversed`.
Christian Heimes7f044312008-01-06 17:05:40 +00001881
1882
Georg Brandl116aa622007-08-15 14:28:22 +00001883The membership test operators (:keyword:`in` and :keyword:`not in`) are normally
1884implemented as an iteration through a sequence. However, container objects can
1885supply the following special method with a more efficient implementation, which
1886also does not require the object be a sequence.
1887
Georg Brandl116aa622007-08-15 14:28:22 +00001888.. method:: object.__contains__(self, item)
1889
Georg Brandl495f7b52009-10-27 15:28:25 +00001890 Called to implement membership test operators. Should return true if *item*
1891 is in *self*, false otherwise. For mapping objects, this should consider the
1892 keys of the mapping rather than the values or the key-item pairs.
1893
1894 For objects that don't define :meth:`__contains__`, the membership test first
1895 tries iteration via :meth:`__iter__`, then the old sequence iteration
1896 protocol via :meth:`__getitem__`, see :ref:`this section in the language
1897 reference <membership-test-details>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001898
1899
Georg Brandl116aa622007-08-15 14:28:22 +00001900.. _numeric-types:
1901
1902Emulating numeric types
1903-----------------------
1904
1905The following methods can be defined to emulate numeric objects. Methods
1906corresponding to operations that are not supported by the particular kind of
1907number implemented (e.g., bitwise operations for non-integral numbers) should be
1908left undefined.
1909
1910
1911.. method:: object.__add__(self, other)
1912 object.__sub__(self, other)
1913 object.__mul__(self, other)
Georg Brandlae55dc02008-09-06 17:43:49 +00001914 object.__truediv__(self, other)
Georg Brandl116aa622007-08-15 14:28:22 +00001915 object.__floordiv__(self, other)
1916 object.__mod__(self, other)
1917 object.__divmod__(self, other)
1918 object.__pow__(self, other[, modulo])
1919 object.__lshift__(self, other)
1920 object.__rshift__(self, other)
1921 object.__and__(self, other)
1922 object.__xor__(self, other)
1923 object.__or__(self, other)
1924
1925 .. index::
1926 builtin: divmod
1927 builtin: pow
1928 builtin: pow
1929
1930 These methods are called to implement the binary arithmetic operations (``+``,
Georg Brandlae55dc02008-09-06 17:43:49 +00001931 ``-``, ``*``, ``/``, ``//``, ``%``, :func:`divmod`, :func:`pow`, ``**``, ``<<``,
Georg Brandl116aa622007-08-15 14:28:22 +00001932 ``>>``, ``&``, ``^``, ``|``). For instance, to evaluate the expression
Brett Cannon3a954da2008-08-14 05:59:39 +00001933 ``x + y``, where *x* is an instance of a class that has an :meth:`__add__`
Georg Brandl116aa622007-08-15 14:28:22 +00001934 method, ``x.__add__(y)`` is called. The :meth:`__divmod__` method should be the
1935 equivalent to using :meth:`__floordiv__` and :meth:`__mod__`; it should not be
Georg Brandlae55dc02008-09-06 17:43:49 +00001936 related to :meth:`__truediv__`. Note that :meth:`__pow__` should be defined
1937 to accept an optional third argument if the ternary version of the built-in
1938 :func:`pow` function is to be supported.
Georg Brandl116aa622007-08-15 14:28:22 +00001939
1940 If one of those methods does not support the operation with the supplied
1941 arguments, it should return ``NotImplemented``.
1942
1943
Georg Brandl116aa622007-08-15 14:28:22 +00001944.. method:: object.__radd__(self, other)
1945 object.__rsub__(self, other)
1946 object.__rmul__(self, other)
Georg Brandl116aa622007-08-15 14:28:22 +00001947 object.__rtruediv__(self, other)
1948 object.__rfloordiv__(self, other)
1949 object.__rmod__(self, other)
1950 object.__rdivmod__(self, other)
1951 object.__rpow__(self, other)
1952 object.__rlshift__(self, other)
1953 object.__rrshift__(self, other)
1954 object.__rand__(self, other)
1955 object.__rxor__(self, other)
1956 object.__ror__(self, other)
1957
1958 .. index::
1959 builtin: divmod
1960 builtin: pow
1961
1962 These methods are called to implement the binary arithmetic operations (``+``,
Georg Brandlae55dc02008-09-06 17:43:49 +00001963 ``-``, ``*``, ``/``, ``//``, ``%``, :func:`divmod`, :func:`pow`, ``**``,
1964 ``<<``, ``>>``, ``&``, ``^``, ``|``) with reflected (swapped) operands.
1965 These functions are only called if the left operand does not support the
1966 corresponding operation and the operands are of different types. [#]_ For
1967 instance, to evaluate the expression ``x - y``, where *y* is an instance of
1968 a class that has an :meth:`__rsub__` method, ``y.__rsub__(x)`` is called if
1969 ``x.__sub__(y)`` returns *NotImplemented*.
Georg Brandl116aa622007-08-15 14:28:22 +00001970
1971 .. index:: builtin: pow
1972
1973 Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the
1974 coercion rules would become too complicated).
1975
1976 .. note::
1977
1978 If the right operand's type is a subclass of the left operand's type and that
1979 subclass provides the reflected method for the operation, this method will be
1980 called before the left operand's non-reflected method. This behavior allows
1981 subclasses to override their ancestors' operations.
1982
1983
1984.. method:: object.__iadd__(self, other)
1985 object.__isub__(self, other)
1986 object.__imul__(self, other)
Georg Brandl116aa622007-08-15 14:28:22 +00001987 object.__itruediv__(self, other)
1988 object.__ifloordiv__(self, other)
1989 object.__imod__(self, other)
1990 object.__ipow__(self, other[, modulo])
1991 object.__ilshift__(self, other)
1992 object.__irshift__(self, other)
1993 object.__iand__(self, other)
1994 object.__ixor__(self, other)
1995 object.__ior__(self, other)
1996
Benjamin Petersonb58dda72009-01-18 22:27:04 +00001997 These methods are called to implement the augmented arithmetic assignments
Georg Brandl116aa622007-08-15 14:28:22 +00001998 (``+=``, ``-=``, ``*=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, ``>>=``,
1999 ``&=``, ``^=``, ``|=``). These methods should attempt to do the operation
2000 in-place (modifying *self*) and return the result (which could be, but does
2001 not have to be, *self*). If a specific method is not defined, the augmented
Benjamin Petersonb58dda72009-01-18 22:27:04 +00002002 assignment falls back to the normal methods. For instance, to execute the
2003 statement ``x += y``, where *x* is an instance of a class that has an
Georg Brandl116aa622007-08-15 14:28:22 +00002004 :meth:`__iadd__` method, ``x.__iadd__(y)`` is called. If *x* is an instance
2005 of a class that does not define a :meth:`__iadd__` method, ``x.__add__(y)``
Brett Cannon3a954da2008-08-14 05:59:39 +00002006 and ``y.__radd__(x)`` are considered, as with the evaluation of ``x + y``.
Georg Brandl116aa622007-08-15 14:28:22 +00002007
2008
2009.. method:: object.__neg__(self)
2010 object.__pos__(self)
2011 object.__abs__(self)
2012 object.__invert__(self)
2013
2014 .. index:: builtin: abs
2015
2016 Called to implement the unary arithmetic operations (``-``, ``+``, :func:`abs`
2017 and ``~``).
2018
2019
2020.. method:: object.__complex__(self)
2021 object.__int__(self)
Georg Brandl116aa622007-08-15 14:28:22 +00002022 object.__float__(self)
Mark Summerfield9557f602008-07-01 14:42:30 +00002023 object.__round__(self, [,n])
Georg Brandl116aa622007-08-15 14:28:22 +00002024
2025 .. index::
2026 builtin: complex
2027 builtin: int
Georg Brandl116aa622007-08-15 14:28:22 +00002028 builtin: float
Mark Summerfield9557f602008-07-01 14:42:30 +00002029 builtin: round
Georg Brandl116aa622007-08-15 14:28:22 +00002030
Mark Summerfield9557f602008-07-01 14:42:30 +00002031 Called to implement the built-in functions :func:`complex`,
2032 :func:`int`, :func:`float` and :func:`round`. Should return a value
2033 of the appropriate type.
Georg Brandl116aa622007-08-15 14:28:22 +00002034
2035
2036.. method:: object.__index__(self)
2037
2038 Called to implement :func:`operator.index`. Also called whenever Python needs
2039 an integer object (such as in slicing, or in the built-in :func:`bin`,
Georg Brandl5c106642007-11-29 17:41:05 +00002040 :func:`hex` and :func:`oct` functions). Must return an integer.
Georg Brandl116aa622007-08-15 14:28:22 +00002041
Georg Brandl116aa622007-08-15 14:28:22 +00002042
2043.. _context-managers:
2044
2045With Statement Context Managers
2046-------------------------------
2047
Georg Brandl116aa622007-08-15 14:28:22 +00002048A :dfn:`context manager` is an object that defines the runtime context to be
2049established when executing a :keyword:`with` statement. The context manager
2050handles the entry into, and the exit from, the desired runtime context for the
2051execution of the block of code. Context managers are normally invoked using the
2052:keyword:`with` statement (described in section :ref:`with`), but can also be
2053used by directly invoking their methods.
2054
2055.. index::
2056 statement: with
2057 single: context manager
2058
2059Typical uses of context managers include saving and restoring various kinds of
2060global state, locking and unlocking resources, closing opened files, etc.
2061
2062For more information on context managers, see :ref:`typecontextmanager`.
2063
2064
2065.. method:: object.__enter__(self)
2066
2067 Enter the runtime context related to this object. The :keyword:`with` statement
2068 will bind this method's return value to the target(s) specified in the
2069 :keyword:`as` clause of the statement, if any.
2070
2071
2072.. method:: object.__exit__(self, exc_type, exc_value, traceback)
2073
2074 Exit the runtime context related to this object. The parameters describe the
2075 exception that caused the context to be exited. If the context was exited
2076 without an exception, all three arguments will be :const:`None`.
2077
2078 If an exception is supplied, and the method wishes to suppress the exception
2079 (i.e., prevent it from being propagated), it should return a true value.
2080 Otherwise, the exception will be processed normally upon exit from this method.
2081
2082 Note that :meth:`__exit__` methods should not reraise the passed-in exception;
2083 this is the caller's responsibility.
2084
2085
2086.. seealso::
2087
2088 :pep:`0343` - The "with" statement
2089 The specification, background, and examples for the Python :keyword:`with`
2090 statement.
2091
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00002092
2093.. _special-lookup:
2094
2095Special method lookup
2096---------------------
2097
2098For custom classes, implicit invocations of special methods are only guaranteed
2099to work correctly if defined on an object's type, not in the object's instance
2100dictionary. That behaviour is the reason why the following code raises an
2101exception::
2102
Éric Araujo28053fb2010-11-22 03:09:19 +00002103 >>> class C:
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00002104 ... pass
2105 ...
2106 >>> c = C()
2107 >>> c.__len__ = lambda: 5
2108 >>> len(c)
2109 Traceback (most recent call last):
2110 File "<stdin>", line 1, in <module>
2111 TypeError: object of type 'C' has no len()
2112
2113The rationale behind this behaviour lies with a number of special methods such
2114as :meth:`__hash__` and :meth:`__repr__` that are implemented by all objects,
2115including type objects. If the implicit lookup of these methods used the
2116conventional lookup process, they would fail when invoked on the type object
2117itself::
2118
2119 >>> 1 .__hash__() == hash(1)
2120 True
2121 >>> int.__hash__() == hash(int)
2122 Traceback (most recent call last):
2123 File "<stdin>", line 1, in <module>
2124 TypeError: descriptor '__hash__' of 'int' object needs an argument
2125
2126Incorrectly attempting to invoke an unbound method of a class in this way is
2127sometimes referred to as 'metaclass confusion', and is avoided by bypassing
2128the instance when looking up special methods::
2129
2130 >>> type(1).__hash__(1) == hash(1)
2131 True
2132 >>> type(int).__hash__(int) == hash(int)
2133 True
2134
2135In addition to bypassing any instance attributes in the interest of
Georg Brandlaf265f42008-12-07 15:06:20 +00002136correctness, implicit special method lookup generally also bypasses the
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00002137:meth:`__getattribute__` method even of the object's metaclass::
2138
2139 >>> class Meta(type):
2140 ... def __getattribute__(*args):
Benjamin Peterson64106fb2008-10-29 20:35:35 +00002141 ... print("Metaclass getattribute invoked")
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00002142 ... return type.__getattribute__(*args)
2143 ...
Benjamin Petersone348d1a2008-10-19 21:29:05 +00002144 >>> class C(object, metaclass=Meta):
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00002145 ... def __len__(self):
2146 ... return 10
2147 ... def __getattribute__(*args):
Benjamin Peterson64106fb2008-10-29 20:35:35 +00002148 ... print("Class getattribute invoked")
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00002149 ... return object.__getattribute__(*args)
2150 ...
2151 >>> c = C()
2152 >>> c.__len__() # Explicit lookup via instance
2153 Class getattribute invoked
2154 10
2155 >>> type(c).__len__(c) # Explicit lookup via type
2156 Metaclass getattribute invoked
2157 10
2158 >>> len(c) # Implicit lookup
2159 10
2160
2161Bypassing the :meth:`__getattribute__` machinery in this fashion
2162provides significant scope for speed optimisations within the
2163interpreter, at the cost of some flexibility in the handling of
2164special methods (the special method *must* be set on the class
2165object itself in order to be consistently invoked by the interpreter).
2166
2167
Georg Brandl116aa622007-08-15 14:28:22 +00002168.. rubric:: Footnotes
2169
Nick Coghlan3a5d7e32008-08-31 12:40:14 +00002170.. [#] It *is* possible in some cases to change an object's type, under certain
2171 controlled conditions. It generally isn't a good idea though, since it can
2172 lead to some very strange behaviour if it is handled incorrectly.
2173
Georg Brandl116aa622007-08-15 14:28:22 +00002174.. [#] For operands of the same type, it is assumed that if the non-reflected method
2175 (such as :meth:`__add__`) fails the operation is not supported, which is why the
2176 reflected method is not called.