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