Bump version to 0.9.1.
[python/dscho.git] / Doc / ref / ref3.tex
blobcdf5e62738e496ee9e2b591df1dd272a64991c4d
1 \chapter{Data model\label{datamodel}}
3 \section{Objects, values and types\label{objects}}
5 \dfn{Objects} are Python's abstraction for data. All data in a Python
6 program is represented by objects or by relations between objects.
7 (In a sense, and in conformance to Von Neumann's model of a
8 ``stored program computer,'' code is also represented by objects.)
9 \index{object}
10 \index{data}
12 Every object has an identity, a type and a value. An object's
13 \emph{identity} never changes once it has been created; you may think
14 of it as the object's address in memory. The `\code{is}' operator
15 compares the identity of two objects; the
16 \function{id()}\bifuncindex{id} function returns an integer
17 representing its identity (currently implemented as its address).
18 An object's \dfn{type} is
19 also unchangeable. It determines the operations that an object
20 supports (e.g., ``does it have a length?'') and also defines the
21 possible values for objects of that type. The
22 \function{type()}\bifuncindex{type} function returns an object's type
23 (which is an object itself). The \emph{value} of some
24 objects can change. Objects whose value can change are said to be
25 \emph{mutable}; objects whose value is unchangeable once they are
26 created are called \emph{immutable}.
27 (The value of an immutable container object that contains a reference
28 to a mutable object can change when the latter's value is changed;
29 however the container is still considered immutable, because the
30 collection of objects it contains cannot be changed. So, immutability
31 is not strictly the same as having an unchangeable value, it is more
32 subtle.)
33 An object's mutability is determined by its type; for instance,
34 numbers, strings and tuples are immutable, while dictionaries and
35 lists are mutable.
36 \index{identity of an object}
37 \index{value of an object}
38 \index{type of an object}
39 \index{mutable object}
40 \index{immutable object}
42 Objects are never explicitly destroyed; however, when they become
43 unreachable they may be garbage-collected. An implementation is
44 allowed to postpone garbage collection or omit it altogether --- it is
45 a matter of implementation quality how garbage collection is
46 implemented, as long as no objects are collected that are still
47 reachable. (Implementation note: the current implementation uses a
48 reference-counting scheme which collects most objects as soon as they
49 become unreachable, but never collects garbage containing circular
50 references.)
51 \index{garbage collection}
52 \index{reference counting}
53 \index{unreachable object}
55 Note that the use of the implementation's tracing or debugging
56 facilities may keep objects alive that would normally be collectable.
57 Also note that catching an exception with a
58 `\keyword{try}...\keyword{except}' statement may keep objects alive.
60 Some objects contain references to ``external'' resources such as open
61 files or windows. It is understood that these resources are freed
62 when the object is garbage-collected, but since garbage collection is
63 not guaranteed to happen, such objects also provide an explicit way to
64 release the external resource, usually a \method{close()} method.
65 Programs are strongly recommended to explicitly close such
66 objects. The `\keyword{try}...\keyword{finally}' statement provides
67 a convenient way to do this.
69 Some objects contain references to other objects; these are called
70 \emph{containers}. Examples of containers are tuples, lists and
71 dictionaries. The references are part of a container's value. In
72 most cases, when we talk about the value of a container, we imply the
73 values, not the identities of the contained objects; however, when we
74 talk about the mutability of a container, only the identities of
75 the immediately contained objects are implied. So, if an immutable
76 container (like a tuple)
77 contains a reference to a mutable object, its value changes
78 if that mutable object is changed.
79 \index{container}
81 Types affect almost all aspects of object behavior. Even the importance
82 of object identity is affected in some sense: for immutable types,
83 operations that compute new values may actually return a reference to
84 any existing object with the same type and value, while for mutable
85 objects this is not allowed. E.g., after
86 \samp{a = 1; b = 1},
87 \code{a} and \code{b} may or may not refer to the same object with the
88 value one, depending on the implementation, but after
89 \samp{c = []; d = []}, \code{c} and \code{d}
90 are guaranteed to refer to two different, unique, newly created empty
91 lists.
92 (Note that \samp{c = d = []} assigns the same object to both
93 \code{c} and \code{d}.)
95 \section{The standard type hierarchy\label{types}}
97 Below is a list of the types that are built into Python. Extension
98 modules written in \C{} can define additional types. Future versions of
99 Python may add types to the type hierarchy (e.g., rational
100 numbers, efficiently stored arrays of integers, etc.).
101 \index{type}
102 \indexii{data}{type}
103 \indexii{type}{hierarchy}
104 \indexii{extension}{module}
105 \indexii{C}{language}
107 Some of the type descriptions below contain a paragraph listing
108 `special attributes.' These are attributes that provide access to the
109 implementation and are not intended for general use. Their definition
110 may change in the future. There are also some `generic' special
111 attributes, not listed with the individual objects: \member{__methods__}
112 is a list of the method names of a built-in object, if it has any;
113 \member{__members__} is a list of the data attribute names of a built-in
114 object, if it has any.
115 \index{attribute}
116 \indexii{special}{attribute}
117 \indexiii{generic}{special}{attribute}
118 \withsubitem{(built-in object attribute)}{
119 \ttindex{__methods__}
120 \ttindex{__members__}}
122 \begin{description}
124 \item[None]
125 This type has a single value. There is a single object with this value.
126 This object is accessed through the built-in name \code{None}.
127 It is used to signify the absence of a value in many situations, e.g.,
128 it is returned from functions that don't explicitly return anything.
129 Its truth value is false.
130 \ttindex{None}
131 \obindex{None@{\texttt{None}}}
133 \item[Ellipsis]
134 This type has a single value. There is a single object with this value.
135 This object is accessed through the built-in name \code{Ellipsis}.
136 It is used to indicate the presence of the \samp{...} syntax in a
137 slice. Its truth value is true.
138 \ttindex{Ellipsis}
139 \obindex{Ellipsis@{\texttt{Ellipsis}}}
141 \item[Numbers]
142 These are created by numeric literals and returned as results by
143 arithmetic operators and arithmetic built-in functions. Numeric
144 objects are immutable; once created their value never changes. Python
145 numbers are of course strongly related to mathematical numbers, but
146 subject to the limitations of numerical representation in computers.
147 \obindex{numeric}
149 Python distinguishes between integers and floating point numbers:
151 \begin{description}
152 \item[Integers]
153 These represent elements from the mathematical set of whole numbers.
154 \obindex{integer}
156 There are two types of integers:
158 \begin{description}
160 \item[Plain integers]
161 These represent numbers in the range -2147483648 through 2147483647.
162 (The range may be larger on machines with a larger natural word
163 size, but not smaller.)
164 When the result of an operation would fall outside this range, the
165 exception \exception{OverflowError} is raised.
166 For the purpose of shift and mask operations, integers are assumed to
167 have a binary, 2's complement notation using 32 or more bits, and
168 hiding no bits from the user (i.e., all 4294967296 different bit
169 patterns correspond to different values).
170 \obindex{plain integer}
171 \withsubitem{(built-in exception)}{\ttindex{OverflowError}}
173 \item[Long integers]
174 These represent numbers in an unlimited range, subject to available
175 (virtual) memory only. For the purpose of shift and mask operations,
176 a binary representation is assumed, and negative numbers are
177 represented in a variant of 2's complement which gives the illusion of
178 an infinite string of sign bits extending to the left.
179 \obindex{long integer}
181 \end{description} % Integers
183 The rules for integer representation are intended to give the most
184 meaningful interpretation of shift and mask operations involving
185 negative integers and the least surprises when switching between the
186 plain and long integer domains. For any operation except left shift,
187 if it yields a result in the plain integer domain without causing
188 overflow, it will yield the same result in the long integer domain or
189 when using mixed operands.
190 \indexii{integer}{representation}
192 \item[Floating point numbers]
193 These represent machine-level double precision floating point numbers.
194 You are at the mercy of the underlying machine architecture and
195 \C{} implementation for the accepted range and handling of overflow.
196 Python does not support single-precision floating point numbers; the
197 savings in CPU and memory usage that are usually the reason for using
198 these is dwarfed by the overhead of using objects in Python, so there
199 is no reason to complicate the language with two kinds of floating
200 point numbers.
201 \obindex{floating point}
202 \indexii{floating point}{number}
203 \indexii{C}{language}
205 \item[Complex numbers]
206 These represent complex numbers as a pair of machine-level double
207 precision floating point numbers. The same caveats apply as for
208 floating point numbers. The real and imaginary value of a complex
209 number \code{z} can be retrieved through the attributes \code{z.real}
210 and \code{z.imag}.
211 \obindex{complex}
212 \indexii{complex}{number}
214 \end{description} % Numbers
216 \item[Sequences]
217 These represent finite ordered sets indexed by natural numbers.
218 The built-in function \function{len()}\bifuncindex{len} returns the
219 number of items of a sequence.
220 When the length of a sequence is \var{n}, the
221 index set contains the numbers 0, 1, \ldots, \var{n}-1. Item
222 \var{i} of sequence \var{a} is selected by \code{\var{a}[\var{i}]}.
223 \obindex{sequence}
224 \index{index operation}
225 \index{item selection}
226 \index{subscription}
228 Sequences also support slicing: \code{\var{a}[\var{i}:\var{j}]}
229 selects all items with index \var{k} such that \var{i} \code{<=}
230 \var{k} \code{<} \var{j}. When used as an expression, a slice is a
231 sequence of the same type. This implies that the index set is
232 renumbered so that it starts at 0.
233 \index{slicing}
235 Sequences are distinguished according to their mutability:
237 \begin{description}
239 \item[Immutable sequences]
240 An object of an immutable sequence type cannot change once it is
241 created. (If the object contains references to other objects,
242 these other objects may be mutable and may be changed; however,
243 the collection of objects directly referenced by an immutable object
244 cannot change.)
245 \obindex{immutable sequence}
246 \obindex{immutable}
248 The following types are immutable sequences:
250 \begin{description}
252 \item[Strings]
253 The items of a string are characters. There is no separate
254 character type; a character is represented by a string of one item.
255 Characters represent (at least) 8-bit bytes. The built-in
256 functions \function{chr()}\bifuncindex{chr} and
257 \function{ord()}\bifuncindex{ord} convert between characters and
258 nonnegative integers representing the byte values. Bytes with the
259 values 0-127 usually represent the corresponding \ASCII{} values, but
260 the interpretation of values is up to the program. The string
261 data type is also used to represent arrays of bytes, e.g., to hold data
262 read from a file.
263 \obindex{string}
264 \index{character}
265 \index{byte}
266 \index{ASCII@\ASCII{}}
268 (On systems whose native character set is not \ASCII{}, strings may use
269 EBCDIC in their internal representation, provided the functions
270 \function{chr()} and \function{ord()} implement a mapping between \ASCII{} and
271 EBCDIC, and string comparison preserves the \ASCII{} order.
272 Or perhaps someone can propose a better rule?)
273 \index{ASCII@\ASCII{}}
274 \index{EBCDIC}
275 \index{character set}
276 \indexii{string}{comparison}
277 \bifuncindex{chr}
278 \bifuncindex{ord}
280 \item[Unicode]
281 The items of a Unicode object are Unicode characters. A Unicode
282 character is represented by a Unicode object of one item and can hold
283 a 16-bit value representing a Unicode ordinal. The built-in functions
284 \function{unichr()}\bifuncindex{unichr} and
285 \function{ord()}\bifuncindex{ord} convert between characters and
286 nonnegative integers representing the Unicode ordinals as defined in
287 the Unicode Standard 3.0. Conversion from and to other encodings are
288 possible through the Unicode method \method{encode} and the built-in
289 function \function{unicode()}\bifuncindex{unicode}.
290 \obindex{unicode}
291 \index{character}
292 \index{integer}
293 \index{Unicode}
295 \item[Tuples]
296 The items of a tuple are arbitrary Python objects.
297 Tuples of two or more items are formed by comma-separated lists
298 of expressions. A tuple of one item (a `singleton') can be formed
299 by affixing a comma to an expression (an expression by itself does
300 not create a tuple, since parentheses must be usable for grouping of
301 expressions). An empty tuple can be formed by an empty pair of
302 parentheses.
303 \obindex{tuple}
304 \indexii{singleton}{tuple}
305 \indexii{empty}{tuple}
307 \end{description} % Immutable sequences
309 \item[Mutable sequences]
310 Mutable sequences can be changed after they are created. The
311 subscription and slicing notations can be used as the target of
312 assignment and \keyword{del} (delete) statements.
313 \obindex{mutable sequence}
314 \obindex{mutable}
315 \indexii{assignment}{statement}
316 \index{delete}
317 \stindex{del}
318 \index{subscription}
319 \index{slicing}
321 There is currently a single mutable sequence type:
323 \begin{description}
325 \item[Lists]
326 The items of a list are arbitrary Python objects. Lists are formed
327 by placing a comma-separated list of expressions in square brackets.
328 (Note that there are no special cases needed to form lists of length 0
329 or 1.)
330 \obindex{list}
332 \end{description} % Mutable sequences
334 The extension module \module{array}\refstmodindex{array} provides an
335 additional example of a mutable sequence type.
338 \end{description} % Sequences
340 \item[Mappings]
341 These represent finite sets of objects indexed by arbitrary index sets.
342 The subscript notation \code{a[k]} selects the item indexed
343 by \code{k} from the mapping \code{a}; this can be used in
344 expressions and as the target of assignments or \keyword{del} statements.
345 The built-in function \function{len()} returns the number of items
346 in a mapping.
347 \bifuncindex{len}
348 \index{subscription}
349 \obindex{mapping}
351 There is currently a single intrinsic mapping type:
353 \begin{description}
355 \item[Dictionaries]
356 These\obindex{dictionary} represent finite sets of objects indexed by
357 nearly arbitrary values. The only types of values not acceptable as
358 keys are values containing lists or dictionaries or other mutable
359 types that are compared by value rather than by object identity, the
360 reason being that the efficient implementation of dictionaries
361 requires a key's hash value to remain constant.
362 Numeric types used for keys obey the normal rules for numeric
363 comparison: if two numbers compare equal (e.g., \code{1} and
364 \code{1.0}) then they can be used interchangeably to index the same
365 dictionary entry.
367 Dictionaries are \obindex{mutable}mutable; they are created by the
368 \code{\{...\}} notation (see section \ref{dict}, ``Dictionary
369 Displays'').
371 The extension modules \module{dbm}\refstmodindex{dbm},
372 \module{gdbm}\refstmodindex{gdbm}, \module{bsddb}\refstmodindex{bsddb}
373 provide additional examples of mapping types.
375 \end{description} % Mapping types
377 \item[Callable types]
378 These\obindex{callable} are the types to which the function call
379 operation (see section \ref{calls}, ``Calls'') can be applied:
380 \indexii{function}{call}
381 \index{invocation}
382 \indexii{function}{argument}
384 \begin{description}
386 \item[User-defined functions]
387 A user-defined function object is created by a function definition
388 (see section \ref{function}, ``Function definitions''). It should be
389 called with an argument
390 list containing the same number of items as the function's formal
391 parameter list.
392 \indexii{user-defined}{function}
393 \obindex{function}
394 \obindex{user-defined function}
396 Special attributes: \member{func_doc} or \member{__doc__} is the
397 function's documentation string, or None if unavailable;
398 \member{func_name} or \member{__name__} is the function's name;
399 \member{func_defaults} is a tuple containing default argument values for
400 those arguments that have defaults, or \code{None} if no arguments
401 have a default value; \member{func_code} is the code object representing
402 the compiled function body; \member{func_globals} is (a reference to)
403 the dictionary that holds the function's global variables --- it
404 defines the global namespace of the module in which the function was
405 defined.
406 Of these, \member{func_code}, \member{func_defaults} and
407 \member{func_doc} (and this \member{__doc__}) may be writable; the
408 others can never be changed.
409 Additional information about a function's definition can be
410 retrieved from its code object; see the description of internal types
411 below.
412 \withsubitem{(function attribute)}{
413 \ttindex{func_doc}
414 \ttindex{__doc__}
415 \ttindex{__name__}
416 \ttindex{func_defaults}
417 \ttindex{func_code}
418 \ttindex{func_globals}}
419 \indexii{global}{namespace}
421 \item[User-defined methods]
422 A user-defined method object combines a class, a class instance (or
423 \code{None}) and a user-defined function.
424 \obindex{method}
425 \obindex{user-defined method}
426 \indexii{user-defined}{method}
428 Special read-only attributes: \member{im_self} is the class instance
429 object, \member{im_func} is the function object;
430 \member{im_class} is the class that defined the method (which may be a
431 base class of the class of which \member{im_self} is an instance);
432 \member{__doc__} is the method's documentation (same as
433 \code{im_func.__doc__}); \member{__name__} is the method name (same as
434 \code{im_func.__name__}).
435 \withsubitem{(method attribute)}{
436 \ttindex{im_func}
437 \ttindex{im_self}}
439 User-defined method objects are created in two ways: when getting an
440 attribute of a class that is a user-defined function object, or when
441 getting an attribute of a class instance that is a user-defined
442 function object defined by the class of the instance. In the former
443 case (class attribute), the \member{im_self} attribute is \code{None},
444 and the method object is said to be unbound; in the latter case
445 (instance attribute), \method{im_self} is the instance, and the method
446 object is said to be bound. For
447 instance, when \class{C} is a class which contains a definition for a
448 function \method{f()}, \code{C.f} does not yield the function object
449 \code{f}; rather, it yields an unbound method object \code{m} where
450 \code{m.im_class} is \class{C}, \code{m.im_func} is \method{f()}, and
451 \code{m.im_self} is \code{None}. When \code{x} is a \class{C}
452 instance, \code{x.f} yields a bound method object \code{m} where
453 \code{m.im_class} is \code{C}, \code{m.im_func} is \method{f()}, and
454 \code{m.im_self} is \code{x}.
455 \withsubitem{(method attribute)}{
456 \ttindex{im_class}\ttindex{im_func}\ttindex{im_self}}
458 When an unbound user-defined method object is called, the underlying
459 function (\member{im_func}) is called, with the restriction that the
460 first argument must be an instance of the proper class
461 (\member{im_class}) or of a derived class thereof.
463 When a bound user-defined method object is called, the underlying
464 function (\member{im_func}) is called, inserting the class instance
465 (\member{im_self}) in front of the argument list. For instance, when
466 \class{C} is a class which contains a definition for a function
467 \method{f()}, and \code{x} is an instance of \class{C}, calling
468 \code{x.f(1)} is equivalent to calling \code{C.f(x, 1)}.
470 Note that the transformation from function object to (unbound or
471 bound) method object happens each time the attribute is retrieved from
472 the class or instance. In some cases, a fruitful optimization is to
473 assign the attribute to a local variable and call that local variable.
474 Also notice that this transformation only happens for user-defined
475 functions; other callable objects (and all non-callable objects) are
476 retrieved without transformation. It is also important to note that
477 user-defined functions which are attributes of a class instance are
478 not converted to bound methods; this \emph{only} happens when the
479 function is an attribute of the class.
481 \item[Built-in functions]
482 A built-in function object is a wrapper around a \C{} function. Examples
483 of built-in functions are \function{len()} and \function{math.sin()}
484 (\module{math} is a standard built-in module).
485 The number and type of the arguments are
486 determined by the C function.
487 Special read-only attributes: \member{__doc__} is the function's
488 documentation string, or \code{None} if unavailable; \member{__name__}
489 is the function's name; \member{__self__} is set to \code{None} (but see
490 the next item).
491 \obindex{built-in function}
492 \obindex{function}
493 \indexii{C}{language}
495 \item[Built-in methods]
496 This is really a different disguise of a built-in function, this time
497 containing an object passed to the \C{} function as an implicit extra
498 argument. An example of a built-in method is
499 \code{\var{list}.append()}, assuming
500 \var{list} is a list object.
501 In this case, the special read-only attribute \member{__self__} is set
502 to the object denoted by \code{list}.
503 \obindex{built-in method}
504 \obindex{method}
505 \indexii{built-in}{method}
507 \item[Classes]
508 Class objects are described below. When a class object is called,
509 a new class instance (also described below) is created and
510 returned. This implies a call to the class's \method{__init__()} method
511 if it has one. Any arguments are passed on to the \method{__init__()}
512 method. If there is no \method{__init__()} method, the class must be called
513 without arguments.
514 \withsubitem{(object method)}{\ttindex{__init__()}}
515 \obindex{class}
516 \obindex{class instance}
517 \obindex{instance}
518 \indexii{class object}{call}
520 \item[Class instances]
521 Class instances are described below. Class instances are callable
522 only when the class has a \method{__call__()} method; \code{x(arguments)}
523 is a shorthand for \code{x.__call__(arguments)}.
525 \end{description}
527 \item[Modules]
528 Modules are imported by the \keyword{import} statement (see section
529 \ref{import}, ``The \keyword{import} statement'').
530 A module object has a namespace implemented by a dictionary object
531 (this is the dictionary referenced by the func_globals attribute of
532 functions defined in the module). Attribute references are translated
533 to lookups in this dictionary, e.g., \code{m.x} is equivalent to
534 \code{m.__dict__["x"]}.
535 A module object does not contain the code object used to
536 initialize the module (since it isn't needed once the initialization
537 is done).
538 \stindex{import}
539 \obindex{module}
541 Attribute assignment updates the module's namespace dictionary,
542 e.g., \samp{m.x = 1} is equivalent to \samp{m.__dict__["x"] = 1}.
544 Special read-only attribute: \member{__dict__} is the module's
545 namespace as a dictionary object.
546 \withsubitem{(module attribute)}{\ttindex{__dict__}}
548 Predefined (writable) attributes: \member{__name__}
549 is the module's name; \member{__doc__} is the
550 module's documentation string, or
551 \code{None} if unavailable; \member{__file__} is the pathname of the
552 file from which the module was loaded, if it was loaded from a file.
553 The \member{__file__} attribute is not present for C{} modules that are
554 statically linked into the interpreter; for extension modules loaded
555 dynamically from a shared library, it is the pathname of the shared
556 library file.
557 \withsubitem{(module attribute)}{
558 \ttindex{__name__}
559 \ttindex{__doc__}
560 \ttindex{__file__}}
561 \indexii{module}{namespace}
563 \item[Classes]
564 Class objects are created by class definitions (see section
565 \ref{class}, ``Class definitions'').
566 A class has a namespace implemented by a dictionary object.
567 Class attribute references are translated to
568 lookups in this dictionary,
569 e.g., \samp{C.x} is translated to \samp{C.__dict__["x"]}.
570 When the attribute name is not found
571 there, the attribute search continues in the base classes. The search
572 is depth-first, left-to-right in the order of occurrence in the
573 base class list.
574 When a class attribute reference would yield a user-defined function
575 object, it is transformed into an unbound user-defined method object
576 (see above). The \member{im_class} attribute of this method object is the
577 class in which the function object was found, not necessarily the
578 class for which the attribute reference was initiated.
579 \obindex{class}
580 \obindex{class instance}
581 \obindex{instance}
582 \indexii{class object}{call}
583 \index{container}
584 \obindex{dictionary}
585 \indexii{class}{attribute}
587 Class attribute assignments update the class's dictionary, never the
588 dictionary of a base class.
589 \indexiii{class}{attribute}{assignment}
591 A class object can be called (see above) to yield a class instance (see
592 below).
593 \indexii{class object}{call}
595 Special attributes: \member{__name__} is the class name;
596 \member{__module__} is the module name in which the class was defined;
597 \member{__dict__} is the dictionary containing the class's namespace;
598 \member{__bases__} is a tuple (possibly empty or a singleton)
599 containing the base classes, in the order of their occurrence in the
600 base class list; \member{__doc__} is the class's documentation string,
601 or None if undefined.
602 \withsubitem{(class attribute)}{
603 \ttindex{__name__}
604 \ttindex{__module__}
605 \ttindex{__dict__}
606 \ttindex{__bases__}
607 \ttindex{__doc__}}
609 \item[Class instances]
610 A class instance is created by calling a class object (see above).
611 A class instance has a namespace implemented as a dictionary which
612 is the first place in which
613 attribute references are searched. When an attribute is not found
614 there, and the instance's class has an attribute by that name,
615 the search continues with the class attributes. If a class attribute
616 is found that is a user-defined function object (and in no other
617 case), it is transformed into an unbound user-defined method object
618 (see above). The \member{im_class} attribute of this method object is
619 the class in which the function object was found, not necessarily the
620 class of the instance for which the attribute reference was initiated.
621 If no class attribute is found, and the object's class has a
622 \method{__getattr__()} method, that is called to satisfy the lookup.
623 \obindex{class instance}
624 \obindex{instance}
625 \indexii{class}{instance}
626 \indexii{class instance}{attribute}
628 Attribute assignments and deletions update the instance's dictionary,
629 never a class's dictionary. If the class has a \method{__setattr__()} or
630 \method{__delattr__()} method, this is called instead of updating the
631 instance dictionary directly.
632 \indexiii{class instance}{attribute}{assignment}
634 Class instances can pretend to be numbers, sequences, or mappings if
635 they have methods with certain special names. See
636 section \ref{specialnames}, ``Special method names.''
637 \obindex{numeric}
638 \obindex{sequence}
639 \obindex{mapping}
641 Special attributes: \member{__dict__} is the attribute
642 dictionary; \member{__class__} is the instance's class.
643 \withsubitem{(instance attribute)}{
644 \ttindex{__dict__}
645 \ttindex{__class__}}
647 \item[Files]
648 A file\obindex{file} object represents an open file. File objects are
649 created by the \function{open()}\bifuncindex{open} built-in function,
650 and also by
651 \withsubitem{(in module os)}{\ttindex{popen()}}\function{os.popen()},
652 \function{os.fdopen()}, and the
653 \method{makefile()}\withsubitem{(socket method)}{\ttindex{makefile()}}
654 method of socket objects (and perhaps by other functions or methods
655 provided by extension modules). The objects
656 \ttindex{sys.stdin}\code{sys.stdin},
657 \ttindex{sys.stdout}\code{sys.stdout} and
658 \ttindex{sys.stderr}\code{sys.stderr} are initialized to file objects
659 corresponding to the interpreter's standard\index{stdio} input, output
660 and error streams. See the \citetitle[../lib/lib.html]{Python Library
661 Reference} for complete documentation of file objects.
662 \withsubitem{(in module sys)}{
663 \ttindex{stdin}
664 \ttindex{stdout}
665 \ttindex{stderr}}
668 \item[Internal types]
669 A few types used internally by the interpreter are exposed to the user.
670 Their definitions may change with future versions of the interpreter,
671 but they are mentioned here for completeness.
672 \index{internal type}
673 \index{types, internal}
675 \begin{description}
677 \item[Code objects]
678 Code objects represent \emph{byte-compiled} executable Python code, or
679 \emph{bytecode}.
680 The difference between a code
681 object and a function object is that the function object contains an
682 explicit reference to the function's globals (the module in which it
683 was defined), while a code object contains no context;
684 also the default argument values are stored in the function object,
685 not in the code object (because they represent values calculated at
686 run-time). Unlike function objects, code objects are immutable and
687 contain no references (directly or indirectly) to mutable objects.
688 \index{bytecode}
689 \obindex{code}
691 Special read-only attributes: \member{co_name} gives the function
692 name; \member{co_argcount} is the number of positional arguments
693 (including arguments with default values); \member{co_nlocals} is the
694 number of local variables used by the function (including arguments);
695 \member{co_varnames} is a tuple containing the names of the local
696 variables (starting with the argument names); \member{co_code} is a
697 string representing the sequence of bytecode instructions;
698 \member{co_consts} is a tuple containing the literals used by the
699 bytecode; \member{co_names} is a tuple containing the names used by
700 the bytecode; \member{co_filename} is the filename from which the code
701 was compiled; \member{co_firstlineno} is the first line number of the
702 function; \member{co_lnotab} is a string encoding the mapping from
703 byte code offsets to line numbers (for details see the source code of
704 the interpreter); \member{co_stacksize} is the required stack size
705 (including local variables); \member{co_flags} is an integer encoding
706 a number of flags for the interpreter.
707 \withsubitem{(code object attribute)}{
708 \ttindex{co_argcount}
709 \ttindex{co_code}
710 \ttindex{co_consts}
711 \ttindex{co_filename}
712 \ttindex{co_firstlineno}
713 \ttindex{co_flags}
714 \ttindex{co_lnotab}
715 \ttindex{co_name}
716 \ttindex{co_names}
717 \ttindex{co_nlocals}
718 \ttindex{co_stacksize}
719 \ttindex{co_varnames}}
721 The following flag bits are defined for \member{co_flags}: bit
722 \code{0x04} is set if the function uses the \samp{*arguments} syntax
723 to accept an arbitrary number of positional arguments; bit
724 \code{0x08} is set if the function uses the \samp{**keywords} syntax
725 to accept arbitrary keyword arguments; other bits are used internally
726 or reserved for future use. If\index{documentation string} a code
727 object represents a function, the first item in \member{co_consts} is
728 the documentation string of the function, or \code{None} if undefined.
730 \item[Frame objects]
731 Frame objects represent execution frames. They may occur in traceback
732 objects (see below).
733 \obindex{frame}
735 Special read-only attributes: \member{f_back} is to the previous
736 stack frame (towards the caller), or \code{None} if this is the bottom
737 stack frame; \member{f_code} is the code object being executed in this
738 frame; \member{f_locals} is the dictionary used to look up local
739 variables; \member{f_globals} is used for global variables;
740 \member{f_builtins} is used for built-in (intrinsic) names;
741 \member{f_restricted} is a flag indicating whether the function is
742 executing in restricted execution mode;
743 \member{f_lineno} gives the line number and \member{f_lasti} gives the
744 precise instruction (this is an index into the bytecode string of
745 the code object).
746 \withsubitem{(frame attribute)}{
747 \ttindex{f_back}
748 \ttindex{f_code}
749 \ttindex{f_globals}
750 \ttindex{f_locals}
751 \ttindex{f_lineno}
752 \ttindex{f_lasti}
753 \ttindex{f_builtins}
754 \ttindex{f_restricted}}
756 Special writable attributes: \member{f_trace}, if not \code{None}, is a
757 function called at the start of each source code line (this is used by
758 the debugger); \member{f_exc_type}, \member{f_exc_value},
759 \member{f_exc_traceback} represent the most recent exception caught in
760 this frame.
761 \withsubitem{(frame attribute)}{
762 \ttindex{f_trace}
763 \ttindex{f_exc_type}
764 \ttindex{f_exc_value}
765 \ttindex{f_exc_traceback}}
767 \item[Traceback objects] \label{traceback}
768 Traceback objects represent a stack trace of an exception. A
769 traceback object is created when an exception occurs. When the search
770 for an exception handler unwinds the execution stack, at each unwound
771 level a traceback object is inserted in front of the current
772 traceback. When an exception handler is entered, the stack trace is
773 made available to the program.
774 (See section \ref{try}, ``The \code{try} statement.'')
775 It is accessible as \code{sys.exc_traceback}, and also as the third
776 item of the tuple returned by \code{sys.exc_info()}. The latter is
777 the preferred interface, since it works correctly when the program is
778 using multiple threads.
779 When the program contains no suitable handler, the stack trace is written
780 (nicely formatted) to the standard error stream; if the interpreter is
781 interactive, it is also made available to the user as
782 \code{sys.last_traceback}.
783 \obindex{traceback}
784 \indexii{stack}{trace}
785 \indexii{exception}{handler}
786 \indexii{execution}{stack}
787 \withsubitem{(in module sys)}{
788 \ttindex{exc_info}
789 \ttindex{exc_traceback}
790 \ttindex{last_traceback}}
791 \ttindex{sys.exc_info}
792 \ttindex{sys.exc_traceback}
793 \ttindex{sys.last_traceback}
795 Special read-only attributes: \member{tb_next} is the next level in the
796 stack trace (towards the frame where the exception occurred), or
797 \code{None} if there is no next level; \member{tb_frame} points to the
798 execution frame of the current level; \member{tb_lineno} gives the line
799 number where the exception occurred; \member{tb_lasti} indicates the
800 precise instruction. The line number and last instruction in the
801 traceback may differ from the line number of its frame object if the
802 exception occurred in a \keyword{try} statement with no matching
803 except clause or with a finally clause.
804 \withsubitem{(traceback attribute)}{
805 \ttindex{tb_next}
806 \ttindex{tb_frame}
807 \ttindex{tb_lineno}
808 \ttindex{tb_lasti}}
809 \stindex{try}
811 \item[Slice objects]
812 Slice objects are used to represent slices when \emph{extended slice
813 syntax} is used. This is a slice using two colons, or multiple slices
814 or ellipses separated by commas, e.g., \code{a[i:j:step]}, \code{a[i:j,
815 k:l]}, or \code{a[..., i:j])}. They are also created by the built-in
816 \function{slice()}\bifuncindex{slice} function.
818 Special read-only attributes: \member{start} is the lower bound;
819 \member{stop} is the upper bound; \member{step} is the step value; each is
820 \code{None} if omitted. These attributes can have any type.
821 \withsubitem{(slice object attribute)}{
822 \ttindex{start}
823 \ttindex{stop}
824 \ttindex{step}}
826 \end{description} % Internal types
828 \end{description} % Types
831 \section{Special method names\label{specialnames}}
833 A class can implement certain operations that are invoked by special
834 syntax (such as arithmetic operations or subscripting and slicing) by
835 defining methods with special names. For instance, if a class defines
836 a method named \method{__getitem__()}, and \code{x} is an instance of
837 this class, then \code{x[i]} is equivalent to
838 \code{x.__getitem__(i)}. (The reverse is not true --- if \code{x} is
839 a list object, \code{x.__getitem__(i)} is not equivalent to
840 \code{x[i]}.) Except where mentioned, attempts to execute an
841 operation raise an exception when no appropriate method is defined.
842 \withsubitem{(mapping object method)}{\ttindex{__getitem__()}}
845 \subsection{Basic customization\label{customization}}
847 \begin{methoddesc}[object]{__init__}{self\optional{, args...}}
848 Called when the instance is created. The arguments are those passed
849 to the class constructor expression. If a base class has an
850 \method{__init__()} method the derived class's \method{__init__()} method must
851 explicitly call it to ensure proper initialization of the base class
852 part of the instance, e.g., \samp{BaseClass.__init__(\var{self},
853 [\var{args}...])}.
854 \indexii{class}{constructor}
855 \end{methoddesc}
858 \begin{methoddesc}[object]{__del__}{self}
859 Called when the instance is about to be destroyed. This is also
860 called a destructor\index{destructor}. If a base class
861 has a \method{__del__()} method, the derived class's \method{__del__()} method
862 must explicitly call it to ensure proper deletion of the base class
863 part of the instance. Note that it is possible (though not recommended!)
864 for the \method{__del__()}
865 method to postpone destruction of the instance by creating a new
866 reference to it. It may then be called at a later time when this new
867 reference is deleted. It is not guaranteed that
868 \method{__del__()} methods are called for objects that still exist when
869 the interpreter exits.
870 \stindex{del}
872 \strong{Programmer's note:} \samp{del x} doesn't directly call
873 \code{x.__del__()} --- the former decrements the reference count for
874 \code{x} by one, and the latter is only called when its reference
875 count reaches zero. Some common situations that may prevent the
876 reference count of an object to go to zero include: circular
877 references between objects (e.g., a doubly-linked list or a tree data
878 structure with parent and child pointers); a reference to the object
879 on the stack frame of a function that caught an exception (the
880 traceback stored in \code{sys.exc_traceback} keeps the stack frame
881 alive); or a reference to the object on the stack frame that raised an
882 unhandled exception in interactive mode (the traceback stored in
883 \code{sys.last_traceback} keeps the stack frame alive). The first
884 situation can only be remedied by explicitly breaking the cycles; the
885 latter two situations can be resolved by storing None in
886 \code{sys.exc_traceback} or \code{sys.last_traceback}.
888 \strong{Warning:} due to the precarious circumstances under which
889 \method{__del__()} methods are invoked, exceptions that occur during their
890 execution are ignored, and a warning is printed to \code{sys.stderr}
891 instead. Also, when \method{__del__()} is invoked is response to a module
892 being deleted (e.g., when execution of the program is done), other
893 globals referenced by the \method{__del__()} method may already have been
894 deleted. For this reason, \method{__del__()} methods should do the
895 absolute minimum needed to maintain external invariants. Python 1.5
896 guarantees that globals whose name begins with a single underscore are
897 deleted from their module before other globals are deleted; if no
898 other references to such globals exist, this may help in assuring that
899 imported modules are still available at the time when the
900 \method{__del__()} method is called.
901 \end{methoddesc}
903 \begin{methoddesc}[object]{__repr__}{self}
904 Called by the \function{repr()}\bifuncindex{repr} built-in function
905 and by string conversions (reverse quotes) to compute the ``official''
906 string representation of an object. This should normally look like a
907 valid Python expression that can be used to recreate an object with
908 the same value. By convention, objects which cannot be trivially
909 converted to strings which can be used to create a similar object
910 produce a string of the form \samp{<\var{...some useful
911 description...}>}.
912 \indexii{string}{conversion}
913 \indexii{reverse}{quotes}
914 \indexii{backward}{quotes}
915 \index{back-quotes}
916 \end{methoddesc}
918 \begin{methoddesc}[object]{__str__}{self}
919 Called by the \function{str()}\bifuncindex{str} built-in function and
920 by the \keyword{print}\stindex{print} statement to compute the
921 ``informal'' string representation of an object. This differs from
922 \method{__repr__()} in that it does not have to be a valid Python
923 expression: a more convenient or concise representation may be used
924 instead.
925 \end{methoddesc}
927 \begin{methoddesc}[object]{__cmp__}{self, other}
928 Called by all comparison operations. Should return a negative integer if
929 \code{self < other}, zero if \code{self == other}, a positive integer if
930 \code{self > other}. If no \method{__cmp__()} operation is defined, class
931 instances are compared by object identity (``address'').
932 (Note: the restriction that exceptions are not propagated by
933 \method{__cmp__()} has been removed in Python 1.5.)
934 \bifuncindex{cmp}
935 \index{comparisons}
936 \end{methoddesc}
938 \begin{methoddesc}[object]{__rcmp__}{self, other}
939 Called by all comparison operations. Should return a negative integer if
940 \code{self < other}, zero if \code{self == other}, a positive integer if
941 \code{self > other}. If no \method{__cmp__()} operation is defined, class
942 instances are compared by object identity (``address'').
943 (Note: the restriction that exceptions are not propagated by
944 \method{__cmp__()} has been removed in Python 1.5.)
945 \bifuncindex{cmp}
946 \index{comparisons}
947 \end{methoddesc}
949 \begin{methoddesc}[object]{__hash__}{self}
950 Called for the key object for dictionary\obindex{dictionary}
951 operations, and by the built-in function
952 \function{hash()}\bifuncindex{hash}. Should return a 32-bit integer
953 usable as a hash value
954 for dictionary operations. The only required property is that objects
955 which compare equal have the same hash value; it is advised to somehow
956 mix together (e.g., using exclusive or) the hash values for the
957 components of the object that also play a part in comparison of
958 objects. If a class does not define a \method{__cmp__()} method it should
959 not define a \method{__hash__()} operation either; if it defines
960 \method{__cmp__()} but not \method{__hash__()} its instances will not be
961 usable as dictionary keys. If a class defines mutable objects and
962 implements a \method{__cmp__()} method it should not implement
963 \method{__hash__()}, since the dictionary implementation requires that
964 a key's hash value is immutable (if the object's hash value changes, it
965 will be in the wrong hash bucket).
966 \withsubitem{(object method)}{\ttindex{__cmp__()}}
967 \end{methoddesc}
969 \begin{methoddesc}[object]{__nonzero__}{self}
970 Called to implement truth value testing; should return \code{0} or
971 \code{1}. When this method is not defined, \method{__len__()} is
972 called, if it is defined (see below). If a class defines neither
973 \method{__len__()} nor \method{__nonzero__()}, all its instances are
974 considered true.
975 \withsubitem{(mapping object method)}{\ttindex{__len__()}}
976 \end{methoddesc}
979 \subsection{Customizing attribute access\label{attribute-access}}
981 The following methods can be defined to customize the meaning of
982 attribute access (use of, assignment to, or deletion of \code{x.name})
983 for class instances.
984 For performance reasons, these methods are cached in the class object
985 at class definition time; therefore, they cannot be changed after the
986 class definition is executed.
988 \begin{methoddesc}[object]{__getattr__}{self, name}
989 Called when an attribute lookup has not found the attribute in the
990 usual places (i.e. it is not an instance attribute nor is it found in
991 the class tree for \code{self}). \code{name} is the attribute name.
992 This method should return the (computed) attribute value or raise an
993 \exception{AttributeError} exception.
995 Note that if the attribute is found through the normal mechanism,
996 \method{__getattr__()} is not called. (This is an intentional
997 asymmetry between \method{__getattr__()} and \method{__setattr__()}.)
998 This is done both for efficiency reasons and because otherwise
999 \method{__setattr__()} would have no way to access other attributes of
1000 the instance.
1001 Note that at least for instance variables, you can fake
1002 total control by not inserting any values in the instance
1003 attribute dictionary (but instead inserting them in another object).
1004 \withsubitem{(object method)}{\ttindex{__setattr__()}}
1005 \end{methoddesc}
1007 \begin{methoddesc}[object]{__setattr__}{self, name, value}
1008 Called when an attribute assignment is attempted. This is called
1009 instead of the normal mechanism (i.e.\ store the value in the instance
1010 dictionary). \var{name} is the attribute name, \var{value} is the
1011 value to be assigned to it.
1013 If \method{__setattr__()} wants to assign to an instance attribute, it
1014 should not simply execute \samp{self.\var{name} = value} --- this
1015 would cause a recursive call to itself. Instead, it should insert the
1016 value in the dictionary of instance attributes, e.g.,
1017 \samp{self.__dict__[\var{name}] = value}.
1018 \withsubitem{(instance attribute)}{\ttindex{__dict__}}
1019 \end{methoddesc}
1021 \begin{methoddesc}[object]{__delattr__}{self, name}
1022 Like \method{__setattr__()} but for attribute deletion instead of
1023 assignment. This should only be implemented if \samp{del
1024 obj.\var{name}} is meaningful for the object.
1025 \end{methoddesc}
1028 \subsection{Emulating callable objects\label{callable-types}}
1030 \begin{methoddesc}[object]{__call__}{self\optional{, args...}}
1031 Called when the instance is ``called'' as a function; if this method
1032 is defined, \code{\var{x}(arg1, arg2, ...)} is a shorthand for
1033 \code{\var{x}.__call__(arg1, arg2, ...)}.
1034 \indexii{call}{instance}
1035 \end{methoddesc}
1038 \subsection{Emulating sequence and mapping types\label{sequence-types}}
1040 The following methods can be defined to emulate sequence or mapping
1041 objects. The first set of methods is used either to emulate a
1042 sequence or to emulate a mapping; the difference is that for a
1043 sequence, the allowable keys should be the integers \var{k} for which
1044 \code{0 <= \var{k} < \var{N}} where \var{N} is the length of the
1045 sequence, and the method \method{__getslice__()} (see below) should be
1046 defined. It is also recommended that mappings provide methods
1047 \method{keys()}, \method{values()}, \method{items()},
1048 \method{has_key()}, \method{get()}, \method{clear()}, \method{copy()},
1049 and \method{update()} behaving similar to those for
1050 Python's standard dictionary objects; mutable sequences should provide
1051 methods \method{append()}, \method{count()}, \method{index()},
1052 \method{insert()}, \method{pop()}, \method{remove()}, \method{reverse()}
1053 and \method{sort()}, like Python standard list objects. Finally,
1054 sequence types should implement addition (meaning concatenation) and
1055 multiplication (meaning repetition) by defining the methods
1056 \method{__add__()}, \method{__radd__()}, \method{__mul__()} and
1057 \method{__rmul__()} described below; they should not define
1058 \method{__coerce__()} or other numerical operators.
1059 \withsubitem{(mapping object method)}{
1060 \ttindex{keys()}
1061 \ttindex{values()}
1062 \ttindex{items()}
1063 \ttindex{has_key()}
1064 \ttindex{get()}
1065 \ttindex{clear()}
1066 \ttindex{copy()}
1067 \ttindex{update()}}
1068 \withsubitem{(sequence object method)}{
1069 \ttindex{append()}
1070 \ttindex{count()}
1071 \ttindex{index()}
1072 \ttindex{insert()}
1073 \ttindex{pop()}
1074 \ttindex{remove()}
1075 \ttindex{reverse()}
1076 \ttindex{sort()}
1077 \ttindex{__add__()}
1078 \ttindex{__radd__()}
1079 \ttindex{__mul__()}
1080 \ttindex{__rmul__()}}
1081 \withsubitem{(numeric object method)}{\ttindex{__coerce__()}}
1083 \begin{methoddesc}[mapping object]{__len__}{self}
1084 Called to implement the built-in function
1085 \function{len()}\bifuncindex{len}. Should return the length of the
1086 object, an integer \code{>=} 0. Also, an object that doesn't define a
1087 \method{__nonzero__()} method and whose \method{__len__()} method
1088 returns zero is considered to be false in a Boolean context.
1089 \withsubitem{(object method)}{\ttindex{__nonzero__()}}
1090 \end{methoddesc}
1092 \begin{methoddesc}[mapping object]{__getitem__}{self, key}
1093 Called to implement evaluation of \code{\var{self}[\var{key}]}.
1094 For a sequence types, the accepted keys should be integers. Note that
1095 the special interpretation of negative indices (if the class wishes to
1096 emulate a sequence type) is up to the \method{__getitem__()} method.
1097 If \var{key} is of an inappropriate type, \exception{TypeError} may be
1098 raised; if of a value outside the set of indexes for the sequence
1099 (after any special interpretation of negative values),
1100 \exception{IndexError} should be raised.
1101 \strong{Note:} \keyword{for} loops expect that an
1102 \exception{IndexError} will be raised for illegal indexes to allow
1103 proper detection of the end of the sequence.
1104 \end{methoddesc}
1106 \begin{methoddesc}[mapping object]{__setitem__}{self, key, value}
1107 Called to implement assignment to \code{\var{self}[\var{key}]}. Same
1108 note as for \method{__getitem__()}. This should only be implemented
1109 for mappings if the objects support changes to the values for keys, or
1110 if new keys can be added, or for sequences if elements can be
1111 replaced. The same exceptions should be raised for improper
1112 \var{key} values as for the \method{__getitem__()} method.
1113 \end{methoddesc}
1115 \begin{methoddesc}[mapping object]{__delitem__}{self, key}
1116 Called to implement deletion of \code{\var{self}[\var{key}]}. Same
1117 note as for \method{__getitem__()}. This should only be implemented
1118 for mappings if the objects support removal of keys, or for sequences
1119 if elements can be removed from the sequence. The same exceptions
1120 should be raised for improper \var{key} values as for the
1121 \method{__getitem__()} method.
1122 \end{methoddesc}
1125 \subsection{Additional methods for emulation of sequence types
1126 \label{sequence-methods}}
1128 The following methods can be defined to further emulate sequence
1129 objects. Immutable sequences methods should only define
1130 \method{__getslice__()}; mutable sequences, should define all three
1131 three methods.
1133 \begin{methoddesc}[sequence object]{__getslice__}{self, i, j}
1134 Called to implement evaluation of \code{\var{self}[\var{i}:\var{j}]}.
1135 The returned object should be of the same type as \var{self}. Note
1136 that missing \var{i} or \var{j} in the slice expression are replaced
1137 by zero or \code{sys.maxint}, respectively. If negative indexes are
1138 used in the slice, the length of the sequence is added to that index.
1139 If the instance does not implement the \method{__len__()} method, an
1140 \exception{AttributeError} is raised.
1141 No guarantee is made that indexes adjusted this way are not still
1142 negative. Indexes which are greater than the length of the sequence
1143 are not modified.
1144 \end{methoddesc}
1146 \begin{methoddesc}[sequence object]{__setslice__}{self, i, j, sequence}
1147 Called to implement assignment to \code{\var{self}[\var{i}:\var{j}]}.
1148 Same notes for \var{i} and \var{j} as for \method{__getslice__()}.
1149 \end{methoddesc}
1151 \begin{methoddesc}[sequence object]{__delslice__}{self, i, j}
1152 Called to implement deletion of \code{\var{self}[\var{i}:\var{j}]}.
1153 Same notes for \var{i} and \var{j} as for \method{__getslice__()}.
1154 \end{methoddesc}
1156 Notice that these methods are only invoked when a single slice with a
1157 single colon is used. For slice operations involving extended slice
1158 notation, \method{__getitem__()}, \method{__setitem__()}
1159 or\method{__delitem__()} is called.
1162 \subsection{Emulating numeric types\label{numeric-types}}
1164 The following methods can be defined to emulate numeric objects.
1165 Methods corresponding to operations that are not supported by the
1166 particular kind of number implemented (e.g., bitwise operations for
1167 non-integral numbers) should be left undefined.
1169 \begin{methoddesc}[numeric object]{__add__}{self, other}
1170 \methodline[numeric object]{__sub__}{self, other}
1171 \methodline[numeric object]{__mul__}{self, other}
1172 \methodline[numeric object]{__div__}{self, other}
1173 \methodline[numeric object]{__mod__}{self, other}
1174 \methodline[numeric object]{__divmod__}{self, other}
1175 \methodline[numeric object]{__pow__}{self, other\optional{, modulo}}
1176 \methodline[numeric object]{__lshift__}{self, other}
1177 \methodline[numeric object]{__rshift__}{self, other}
1178 \methodline[numeric object]{__and__}{self, other}
1179 \methodline[numeric object]{__xor__}{self, other}
1180 \methodline[numeric object]{__or__}{self, other}
1181 These functions are
1182 called to implement the binary arithmetic operations (\code{+},
1183 \code{-}, \code{*}, \code{/}, \code{\%},
1184 \function{divmod()}\bifuncindex{divmod},
1185 \function{pow()}\bifuncindex{pow}, \code{**}, \code{<<}, \code{>>},
1186 \code{\&}, \code{\^}, \code{|}). For instance, to evaluate the
1187 expression \var{x}\code{+}\var{y}, where \var{x} is an instance of a
1188 class that has an \method{__add__()} method,
1189 \code{\var{x}.__add__(\var{y})} is called. Note that
1190 \method{__pow__()} should be defined to accept an optional third
1191 argument if the ternary version of the built-in
1192 \function{pow()}\bifuncindex{pow} function is to be supported.
1193 \end{methoddesc}
1195 \begin{methoddesc}[numeric object]{__radd__}{self, other}
1196 \methodline[numeric object]{__rsub__}{self, other}
1197 \methodline[numeric object]{__rmul__}{self, other}
1198 \methodline[numeric object]{__rdiv__}{self, other}
1199 \methodline[numeric object]{__rmod__}{self, other}
1200 \methodline[numeric object]{__rdivmod__}{self, other}
1201 \methodline[numeric object]{__rpow__}{self, other}
1202 \methodline[numeric object]{__rlshift__}{self, other}
1203 \methodline[numeric object]{__rrshift__}{self, other}
1204 \methodline[numeric object]{__rand__}{self, other}
1205 \methodline[numeric object]{__rxor__}{self, other}
1206 \methodline[numeric object]{__ror__}{self, other}
1207 These functions are
1208 called to implement the binary arithmetic operations (\code{+},
1209 \code{-}, \code{*}, \code{/}, \code{\%},
1210 \function{divmod()}\bifuncindex{divmod},
1211 \function{pow()}\bifuncindex{pow}, \code{**}, \code{<<}, \code{>>},
1212 \code{\&}, \code{\^}, \code{|}) with reversed operands. These
1213 functions are only called if the left operand does not support the
1214 corresponding operation. For instance, to evaluate the expression
1215 \var{x}\code{-}\var{y}, where \var{y} is an instance of a class that
1216 has an \method{__rsub__()} method, \code{\var{y}.__rsub__(\var{x})} is
1217 called. Note that ternary \function{pow()}\bifuncindex{pow} will not
1218 try calling \method{__rpow__()} (the coercion rules would become too
1219 complicated).
1220 \end{methoddesc}
1222 \begin{methoddesc}[numeric object]{__neg__}{self}
1223 \methodline[numeric object]{__pos__}{self}
1224 \methodline[numeric object]{__abs__}{self}
1225 \methodline[numeric object]{__invert__}{self}
1226 Called to implement the unary arithmetic operations (\code{-}, \code{+},
1227 \function{abs()}\bifuncindex{abs} and \code{\~{}}).
1228 \end{methoddesc}
1230 \begin{methoddesc}[numeric object]{__complex__}{self}
1231 \methodline[numeric object]{__int__}{self}
1232 \methodline[numeric object]{__long__}{self}
1233 \methodline[numeric object]{__float__}{self}
1234 Called to implement the built-in functions
1235 \function{complex()}\bifuncindex{complex},
1236 \function{int()}\bifuncindex{int}, \function{long()}\bifuncindex{long},
1237 and \function{float()}\bifuncindex{float}. Should return a value of
1238 the appropriate type.
1239 \end{methoddesc}
1241 \begin{methoddesc}[numeric object]{__oct__}{self}
1242 \methodline[numeric object]{__hex__}{self}
1243 Called to implement the built-in functions
1244 \function{oct()}\bifuncindex{oct} and
1245 \function{hex()}\bifuncindex{hex}. Should return a string value.
1246 \end{methoddesc}
1248 \begin{methoddesc}[numeric object]{__coerce__}{self, other}
1249 Called to implement ``mixed-mode'' numeric arithmetic. Should either
1250 return a 2-tuple containing \var{self} and \var{other} converted to
1251 a common numeric type, or \code{None} if conversion is impossible. When
1252 the common type would be the type of \code{other}, it is sufficient to
1253 return \code{None}, since the interpreter will also ask the other
1254 object to attempt a coercion (but sometimes, if the implementation of
1255 the other type cannot be changed, it is useful to do the conversion to
1256 the other type here).
1257 \end{methoddesc}
1259 \strong{Coercion rules}: to evaluate \var{x} \var{op} \var{y}, the
1260 following steps are taken (where \method{__op__()} and
1261 \method{__rop__()} are the method names corresponding to \var{op},
1262 e.g., if var{op} is `\code{+}', \method{__add__()} and
1263 \method{__radd__()} are used). If an exception occurs at any point,
1264 the evaluation is abandoned and exception handling takes over.
1266 \begin{itemize}
1268 \item[0.] If \var{x} is a string object and op is the modulo operator (\%),
1269 the string formatting operation is invoked and the remaining steps are
1270 skipped.
1272 \item[1.] If \var{x} is a class instance:
1274 \begin{itemize}
1276 \item[1a.] If \var{x} has a \method{__coerce__()} method:
1277 replace \var{x} and \var{y} with the 2-tuple returned by
1278 \code{\var{x}.__coerce__(\var{y})}; skip to step 2 if the
1279 coercion returns \code{None}.
1281 \item[1b.] If neither \var{x} nor \var{y} is a class instance
1282 after coercion, go to step 3.
1284 \item[1c.] If \var{x} has a method \method{__op__()}, return
1285 \code{\var{x}.__op__(\var{y})}; otherwise, restore \var{x} and
1286 \var{y} to their value before step 1a.
1288 \end{itemize}
1290 \item[2.] If \var{y} is a class instance:
1292 \begin{itemize}
1294 \item[2a.] If \var{y} has a \method{__coerce__()} method:
1295 replace \var{y} and \var{x} with the 2-tuple returned by
1296 \code{\var{y}.__coerce__(\var{x})}; skip to step 3 if the
1297 coercion returns \code{None}.
1299 \item[2b.] If neither \var{x} nor \var{y} is a class instance
1300 after coercion, go to step 3.
1302 \item[2b.] If \var{y} has a method \method{__rop__()}, return
1303 \code{\var{y}.__rop__(\var{x})}; otherwise, restore \var{x}
1304 and \var{y} to their value before step 2a.
1306 \end{itemize}
1308 \item[3.] We only get here if neither \var{x} nor \var{y} is a class
1309 instance.
1311 \begin{itemize}
1313 \item[3a.] If op is `\code{+}' and \var{x} is a sequence,
1314 sequence concatenation is invoked.
1316 \item[3b.] If op is `\code{*}' and one operand is a sequence
1317 and the other an integer, sequence repetition is invoked.
1319 \item[3c.] Otherwise, both operands must be numbers; they are
1320 coerced to a common type if possible, and the numeric
1321 operation is invoked for that type.
1323 \end{itemize}
1325 \end{itemize}