1 \chapter{Data model
\label{datamodel
}}
4 \section{Objects, values and types
\label{objects
}}
6 \dfn{Objects
} are Python's abstraction for data. All data in a Python
7 program is represented by objects or by relations between objects.
8 (In a sense, and in conformance to Von Neumann's model of a
9 ``stored program computer,'' code is also represented by objects.)
13 Every object has an identity, a type and a value. An object's
14 \emph{identity
} never changes once it has been created; you may think
15 of it as the object's address in memory. The `
\keyword{is
}' operator
16 compares the identity of two objects; the
17 \function{id()
}\bifuncindex{id
} function returns an integer
18 representing its identity (currently implemented as its address).
19 An object's
\dfn{type
} is
20 also unchangeable.
\footnote{Since Python
2.2, a gradual merging of
21 types and classes has been started that makes this and a few other
22 assertions made in this manual not
100\% accurate and complete:
23 for example, it
\emph{is
} now possible in some cases to change an
24 object's type, under certain controlled conditions. Until this manual
25 undergoes extensive revision, it must now be taken as authoritative
26 only regarding ``classic classes'', that are still the default, for
27 compatibility purposes, in Python
2.2 and
2.3.
}
28 An object's type determines the operations that the object
29 supports (e.g., ``does it have a length?'') and also defines the
30 possible values for objects of that type. The
31 \function{type()
}\bifuncindex{type
} function returns an object's type
32 (which is an object itself). The
\emph{value
} of some
33 objects can change. Objects whose value can change are said to be
34 \emph{mutable
}; objects whose value is unchangeable once they are
35 created are called
\emph{immutable
}.
36 (The value of an immutable container object that contains a reference
37 to a mutable object can change when the latter's value is changed;
38 however the container is still considered immutable, because the
39 collection of objects it contains cannot be changed. So, immutability
40 is not strictly the same as having an unchangeable value, it is more
42 An object's mutability is determined by its type; for instance,
43 numbers, strings and tuples are immutable, while dictionaries and
45 \index{identity of an object
}
46 \index{value of an object
}
47 \index{type of an object
}
48 \index{mutable object
}
49 \index{immutable object
}
51 Objects are never explicitly destroyed; however, when they become
52 unreachable they may be garbage-collected. An implementation is
53 allowed to postpone garbage collection or omit it altogether --- it is
54 a matter of implementation quality how garbage collection is
55 implemented, as long as no objects are collected that are still
56 reachable. (Implementation note: the current implementation uses a
57 reference-counting scheme with (optional) delayed detection of
58 cyclically linked garbage, which collects most objects as soon as they
59 become unreachable, but is not guaranteed to collect garbage
60 containing circular references. See the
61 \citetitle[../lib/module-gc.html
]{Python Library Reference
} for
62 information on controlling the collection of cyclic garbage.)
63 \index{garbage collection
}
64 \index{reference counting
}
65 \index{unreachable object
}
67 Note that the use of the implementation's tracing or debugging
68 facilities may keep objects alive that would normally be collectable.
69 Also note that catching an exception with a
70 `
\keyword{try
}...
\keyword{except
}' statement may keep objects alive.
72 Some objects contain references to ``external'' resources such as open
73 files or windows. It is understood that these resources are freed
74 when the object is garbage-collected, but since garbage collection is
75 not guaranteed to happen, such objects also provide an explicit way to
76 release the external resource, usually a
\method{close()
} method.
77 Programs are strongly recommended to explicitly close such
78 objects. The `
\keyword{try
}...
\keyword{finally
}' statement provides
79 a convenient way to do this.
81 Some objects contain references to other objects; these are called
82 \emph{containers
}. Examples of containers are tuples, lists and
83 dictionaries. The references are part of a container's value. In
84 most cases, when we talk about the value of a container, we imply the
85 values, not the identities of the contained objects; however, when we
86 talk about the mutability of a container, only the identities of
87 the immediately contained objects are implied. So, if an immutable
88 container (like a tuple)
89 contains a reference to a mutable object, its value changes
90 if that mutable object is changed.
93 Types affect almost all aspects of object behavior. Even the importance
94 of object identity is affected in some sense: for immutable types,
95 operations that compute new values may actually return a reference to
96 any existing object with the same type and value, while for mutable
97 objects this is not allowed. E.g., after
99 \code{a
} and
\code{b
} may or may not refer to the same object with the
100 value one, depending on the implementation, but after
101 \samp{c =
[]; d =
[]},
\code{c
} and
\code{d
}
102 are guaranteed to refer to two different, unique, newly created empty
104 (Note that
\samp{c = d =
[]} assigns the same object to both
105 \code{c
} and
\code{d
}.)
108 \section{The standard type hierarchy
\label{types
}}
110 Below is a list of the types that are built into Python. Extension
111 modules (written in C, Java, or other languages, depending on
112 the implementation) can define additional types. Future versions of
113 Python may add types to the type hierarchy (e.g., rational
114 numbers, efficiently stored arrays of integers, etc.).
117 \indexii{type
}{hierarchy
}
118 \indexii{extension
}{module
}
119 \indexii{C
}{language
}
121 Some of the type descriptions below contain a paragraph listing
122 `special attributes.' These are attributes that provide access to the
123 implementation and are not intended for general use. Their definition
124 may change in the future.
126 \indexii{special
}{attribute
}
127 \indexiii{generic
}{special
}{attribute
}
132 This type has a single value. There is a single object with this value.
133 This object is accessed through the built-in name
\code{None
}.
134 It is used to signify the absence of a value in many situations, e.g.,
135 it is returned from functions that don't explicitly return anything.
136 Its truth value is false.
138 \obindex{None@
{\texttt{None
}}}
140 \item[NotImplemented
]
141 This type has a single value. There is a single object with this value.
142 This object is accessed through the built-in name
\code{NotImplemented
}.
143 Numeric methods and rich comparison methods may return this value if
144 they do not implement the operation for the operands provided. (The
145 interpreter will then try the reflected operation, or some other
146 fallback, depending on the operator.) Its truth value is true.
147 \ttindex{NotImplemented
}
148 \obindex{NotImplemented@
{\texttt{NotImplemented
}}}
151 This type has a single value. There is a single object with this value.
152 This object is accessed through the built-in name
\code{Ellipsis
}.
153 It is used to indicate the presence of the
\samp{...
} syntax in a
154 slice. Its truth value is true.
158 These are created by numeric literals and returned as results by
159 arithmetic operators and arithmetic built-in functions. Numeric
160 objects are immutable; once created their value never changes. Python
161 numbers are of course strongly related to mathematical numbers, but
162 subject to the limitations of numerical representation in computers.
165 Python distinguishes between integers, floating point numbers, and
170 These represent elements from the mathematical set of whole numbers.
173 There are three types of integers:
177 \item[Plain integers
]
178 These represent numbers in the range -
2147483648 through
2147483647.
179 (The range may be larger on machines with a larger natural word
180 size, but not smaller.)
181 When the result of an operation would fall outside this range, the
182 result is normally returned as a long integer (in some cases, the
183 exception
\exception{OverflowError
} is raised instead).
184 For the purpose of shift and mask operations, integers are assumed to
185 have a binary,
2's complement notation using
32 or more bits, and
186 hiding no bits from the user (i.e., all
4294967296 different bit
187 patterns correspond to different values).
188 \obindex{plain integer
}
189 \withsubitem{(built-in exception)
}{\ttindex{OverflowError
}}
192 These represent numbers in an unlimited range, subject to available
193 (virtual) memory only. For the purpose of shift and mask operations,
194 a binary representation is assumed, and negative numbers are
195 represented in a variant of
2's complement which gives the illusion of
196 an infinite string of sign bits extending to the left.
197 \obindex{long integer
}
200 These represent the truth values False and True. The two objects
201 representing the values False and True are the only Boolean objects.
202 The Boolean type is a subtype of plain integers, and Boolean values
203 behave like the values
0 and
1, respectively, in almost all contexts,
204 the exception being that when converted to a string, the strings
205 \code{"False"
} or
\code{"True"
} are returned, respectively.
210 \end{description
} % Integers
212 The rules for integer representation are intended to give the most
213 meaningful interpretation of shift and mask operations involving
214 negative integers and the least surprises when switching between the
215 plain and long integer domains. Any operation except left shift,
216 if it yields a result in the plain integer domain without causing
217 overflow, will yield the same result in the long integer domain or
218 when using mixed operands.
219 \indexii{integer
}{representation
}
221 \item[Floating point numbers
]
222 These represent machine-level double precision floating point numbers.
223 You are at the mercy of the underlying machine architecture (and
224 C or Java implementation) for the accepted range and handling of overflow.
225 Python does not support single-precision floating point numbers; the
226 savings in processor and memory usage that are usually the reason for using
227 these is dwarfed by the overhead of using objects in Python, so there
228 is no reason to complicate the language with two kinds of floating
230 \obindex{floating point
}
231 \indexii{floating point
}{number
}
232 \indexii{C
}{language
}
233 \indexii{Java
}{language
}
235 \item[Complex numbers
]
236 These represent complex numbers as a pair of machine-level double
237 precision floating point numbers. The same caveats apply as for
238 floating point numbers. The real and imaginary parts of a complex
239 number
\code{z
} can be retrieved through the read-only attributes
240 \code{z.real
} and
\code{z.imag
}.
242 \indexii{complex
}{number
}
244 \end{description
} % Numbers
248 These represent finite ordered sets indexed by non-negative numbers.
249 The built-in function
\function{len()
}\bifuncindex{len
} returns the
250 number of items of a sequence.
251 When the length of a sequence is
\var{n
}, the
252 index set contains the numbers
0,
1,
\ldots,
\var{n
}-
1. Item
253 \var{i
} of sequence
\var{a
} is selected by
\code{\var{a
}[\var{i
}]}.
255 \index{index operation
}
256 \index{item selection
}
259 Sequences also support slicing:
\code{\var{a
}[\var{i
}:
\var{j
}]}
260 selects all items with index
\var{k
} such that
\var{i
} \code{<=
}
261 \var{k
} \code{<
} \var{j
}. When used as an expression, a slice is a
262 sequence of the same type. This implies that the index set is
263 renumbered so that it starts at
0.
266 Some sequences also support ``extended slicing'' with a third ``step''
267 parameter:
\code{\var{a
}[\var{i
}:
\var{j
}:
\var{k
}]} selects all items
268 of
\var{a
} with index
\var{x
} where
\code{\var{x
} =
\var{i
} +
269 \var{n
}*
\var{k
}},
\var{n
} \code{>=
} \code{0} and
\var{i
} \code{<=
}
270 \var{x
} \code{<
} \var{j
}.
271 \index{extended slicing
}
273 Sequences are distinguished according to their mutability:
277 \item[Immutable sequences
]
278 An object of an immutable sequence type cannot change once it is
279 created. (If the object contains references to other objects,
280 these other objects may be mutable and may be changed; however,
281 the collection of objects directly referenced by an immutable object
283 \obindex{immutable sequence
}
286 The following types are immutable sequences:
291 The items of a string are characters. There is no separate
292 character type; a character is represented by a string of one item.
293 Characters represent (at least)
8-bit bytes. The built-in
294 functions
\function{chr()
}\bifuncindex{chr
} and
295 \function{ord()
}\bifuncindex{ord
} convert between characters and
296 nonnegative integers representing the byte values. Bytes with the
297 values
0-
127 usually represent the corresponding
\ASCII{} values, but
298 the interpretation of values is up to the program. The string
299 data type is also used to represent arrays of bytes, e.g., to hold data
306 (On systems whose native character set is not
\ASCII, strings may use
307 EBCDIC in their internal representation, provided the functions
308 \function{chr()
} and
\function{ord()
} implement a mapping between
\ASCII{} and
309 EBCDIC, and string comparison preserves the
\ASCII{} order.
310 Or perhaps someone can propose a better rule?)
313 \index{character set
}
314 \indexii{string
}{comparison
}
319 The items of a Unicode object are Unicode code units. A Unicode code
320 unit is represented by a Unicode object of one item and can hold
321 either a
16-bit or
32-bit value representing a Unicode ordinal (the
322 maximum value for the ordinal is given in
\code{sys.maxunicode
}, and
323 depends on how Python is configured at compile time). Surrogate pairs
324 may be present in the Unicode object, and will be reported as two
325 separate items. The built-in functions
326 \function{unichr()
}\bifuncindex{unichr
} and
327 \function{ord()
}\bifuncindex{ord
} convert between code units and
328 nonnegative integers representing the Unicode ordinals as defined in
329 the Unicode Standard
3.0. Conversion from and to other encodings are
330 possible through the Unicode method
\method{encode
} and the built-in
331 function
\function{unicode()
}.
\bifuncindex{unicode
}
338 The items of a tuple are arbitrary Python objects.
339 Tuples of two or more items are formed by comma-separated lists
340 of expressions. A tuple of one item (a `singleton') can be formed
341 by affixing a comma to an expression (an expression by itself does
342 not create a tuple, since parentheses must be usable for grouping of
343 expressions). An empty tuple can be formed by an empty pair of
346 \indexii{singleton
}{tuple
}
347 \indexii{empty
}{tuple
}
349 \end{description
} % Immutable sequences
351 \item[Mutable sequences
]
352 Mutable sequences can be changed after they are created. The
353 subscription and slicing notations can be used as the target of
354 assignment and
\keyword{del
} (delete) statements.
355 \obindex{mutable sequence
}
357 \indexii{assignment
}{statement
}
363 There is currently a single intrinsic mutable sequence type:
368 The items of a list are arbitrary Python objects. Lists are formed
369 by placing a comma-separated list of expressions in square brackets.
370 (Note that there are no special cases needed to form lists of length
0
374 \end{description
} % Mutable sequences
376 The extension module
\module{array
}\refstmodindex{array
} provides an
377 additional example of a mutable sequence type.
380 \end{description
} % Sequences
383 These represent finite sets of objects indexed by arbitrary index sets.
384 The subscript notation
\code{a
[k
]} selects the item indexed
385 by
\code{k
} from the mapping
\code{a
}; this can be used in
386 expressions and as the target of assignments or
\keyword{del
} statements.
387 The built-in function
\function{len()
} returns the number of items
393 There is currently a single intrinsic mapping type:
398 These
\obindex{dictionary
} represent finite sets of objects indexed by
399 nearly arbitrary values. The only types of values not acceptable as
400 keys are values containing lists or dictionaries or other mutable
401 types that are compared by value rather than by object identity, the
402 reason being that the efficient implementation of dictionaries
403 requires a key's hash value to remain constant.
404 Numeric types used for keys obey the normal rules for numeric
405 comparison: if two numbers compare equal (e.g.,
\code{1} and
406 \code{1.0}) then they can be used interchangeably to index the same
409 Dictionaries are mutable; they can be created by the
410 \code{\
{...\
}} notation (see section~
\ref{dict
}, ``Dictionary
413 The extension modules
\module{dbm
}\refstmodindex{dbm
},
414 \module{gdbm
}\refstmodindex{gdbm
},
\module{bsddb
}\refstmodindex{bsddb
}
415 provide additional examples of mapping types.
417 \end{description
} % Mapping types
419 \item[Callable types
]
420 These
\obindex{callable
} are the types to which the function call
421 operation (see section~
\ref{calls
}, ``Calls'') can be applied:
422 \indexii{function
}{call
}
424 \indexii{function
}{argument
}
428 \item[User-defined functions
]
429 A user-defined function object is created by a function definition
430 (see section~
\ref{function
}, ``Function definitions''). It should be
431 called with an argument
432 list containing the same number of items as the function's formal
434 \indexii{user-defined
}{function
}
436 \obindex{user-defined function
}
438 Special attributes:
\member{func_doc
} or
\member{__doc__
} is the
439 function's documentation string, or
\code{None
} if unavailable;
440 \member{func_name
} or
\member{__name__
} is the function's name;
441 \member{__module__
} is the name of the module the function was defined
442 in, or
\code{None
} if unavailable;
443 \member{func_defaults
} is a tuple containing default argument values for
444 those arguments that have defaults, or
\code{None
} if no arguments
445 have a default value;
\member{func_code
} is the code object representing
446 the compiled function body;
\member{func_globals
} is (a reference to)
447 the dictionary that holds the function's global variables --- it
448 defines the global namespace of the module in which the function was
449 defined;
\member{func_dict
} or
\member{__dict__
} contains the
450 namespace supporting arbitrary function attributes;
451 \member{func_closure
} is
\code{None
} or a tuple of cells that contain
452 bindings for the function's free variables.
454 Of these,
\member{func_code
},
\member{func_defaults
},
455 \member{func_doc
}/
\member{__doc__
}, and
456 \member{func_dict
}/
\member{__dict__
} may be writable; the
457 others can never be changed. Additional information about a
458 function's definition can be retrieved from its code object; see the
459 description of internal types below.
461 \withsubitem{(function attribute)
}{
467 \ttindex{func_defaults
}
468 \ttindex{func_closure
}
470 \ttindex{func_globals
}
472 \indexii{global
}{namespace
}
474 \item[User-defined methods
]
475 A user-defined method object combines a class, a class instance (or
476 \code{None
}) and any callable object (normally a user-defined
479 \obindex{user-defined method
}
480 \indexii{user-defined
}{method
}
482 Special read-only attributes:
\member{im_self
} is the class instance
483 object,
\member{im_func
} is the function object;
484 \member{im_class
} is the class of
\member{im_self
} for bound methods,
485 or the class that asked for the method for unbound methods);
486 \member{__doc__
} is the method's documentation (same as
487 \code{im_func.__doc__
});
\member{__name__
} is the method name (same as
488 \code{im_func.__name__
});
\member{__module__
} is the name of the
489 module the method was defined in, or
\code{None
} if unavailable.
490 \versionchanged[\member{im_self
} used to refer to the class that
491 defined the method
]{2.2}
492 \withsubitem{(method attribute)
}{
499 Methods also support accessing (but not setting) the arbitrary
500 function attributes on the underlying function object.
502 User-defined method objects are created in two ways: when getting an
503 attribute of a class that is a user-defined function object, or when
504 getting an attribute of a class instance that is a user-defined
505 function object defined by the class of the instance. In the former
506 case (class attribute), the
\member{im_self
} attribute is
\code{None
},
507 and the method object is said to be unbound; in the latter case
508 (instance attribute),
\method{im_self
} is the instance, and the method
509 object is said to be bound. For
510 instance, when
\class{C
} is a class which has a method
511 \method{f()
},
\code{C.f
} does not yield the function object
512 \code{f
}; rather, it yields an unbound method object
\code{m
} where
513 \code{m.im_class
} is
\class{C
},
\code{m.im_func
} is
\method{f()
}, and
514 \code{m.im_self
} is
\code{None
}. When
\code{x
} is a
\class{C
}
515 instance,
\code{x.f
} yields a bound method object
\code{m
} where
516 \code{m.im_class
} is
\code{C
},
\code{m.im_func
} is
\method{f()
}, and
517 \code{m.im_self
} is
\code{x
}.
518 \withsubitem{(method attribute)
}{
519 \ttindex{im_class
}\ttindex{im_func
}\ttindex{im_self
}}
521 When an unbound user-defined method object is called, the underlying
522 function (
\member{im_func
}) is called, with the restriction that the
523 first argument must be an instance of the proper class
524 (
\member{im_class
}) or of a derived class thereof.
526 When a bound user-defined method object is called, the underlying
527 function (
\member{im_func
}) is called, inserting the class instance
528 (
\member{im_self
}) in front of the argument list. For instance, when
529 \class{C
} is a class which contains a definition for a function
530 \method{f()
}, and
\code{x
} is an instance of
\class{C
}, calling
531 \code{x.f(
1)
} is equivalent to calling
\code{C.f(x,
1)
}.
533 Note that the transformation from function object to (unbound or
534 bound) method object happens each time the attribute is retrieved from
535 the class or instance. In some cases, a fruitful optimization is to
536 assign the attribute to a local variable and call that local variable.
537 Also notice that this transformation only happens for user-defined
538 functions; other callable objects (and all non-callable objects) are
539 retrieved without transformation. It is also important to note that
540 user-defined functions which are attributes of a class instance are
541 not converted to bound methods; this
\emph{only
} happens when the
542 function is an attribute of the class.
544 \item[Generator functions
\index{generator!function
}\index{generator!iterator
}]
545 A function or method which uses the
\keyword{yield
} statement (see
546 section~
\ref{yield
}, ``The
\keyword{yield
} statement'') is called a
547 \dfn{generator function
}. Such a function, when called, always
548 returns an iterator object which can be used to execute the body of
549 the function: calling the iterator's
\method{next()
} method will
550 cause the function to execute until it provides a value using the
551 \keyword{yield
} statement. When the function executes a
552 \keyword{return
} statement or falls off the end, a
553 \exception{StopIteration
} exception is raised and the iterator will
554 have reached the end of the set of values to be returned.
556 \item[Built-in functions
]
557 A built-in function object is a wrapper around a
\C{} function. Examples
558 of built-in functions are
\function{len()
} and
\function{math.sin()
}
559 (
\module{math
} is a standard built-in module).
560 The number and type of the arguments are
561 determined by the C function.
562 Special read-only attributes:
\member{__doc__
} is the function's
563 documentation string, or
\code{None
} if unavailable;
\member{__name__
}
564 is the function's name;
\member{__self__
} is set to
\code{None
} (but see
565 the next item);
\member{__module__
} is the name of the module the
566 function was defined in or
\code{None
} if unavailable.
567 \obindex{built-in function
}
569 \indexii{C
}{language
}
571 \item[Built-in methods
]
572 This is really a different disguise of a built-in function, this time
573 containing an object passed to the C function as an implicit extra
574 argument. An example of a built-in method is
575 \code{\var{alist
}.append()
}, assuming
576 \var{alist
} is a list object.
577 In this case, the special read-only attribute
\member{__self__
} is set
578 to the object denoted by
\var{list
}.
579 \obindex{built-in method
}
581 \indexii{built-in
}{method
}
584 Class objects are described below. When a class object is called,
585 a new class instance (also described below) is created and
586 returned. This implies a call to the class's
\method{__init__()
} method
587 if it has one. Any arguments are passed on to the
\method{__init__()
}
588 method. If there is no
\method{__init__()
} method, the class must be called
590 \withsubitem{(object method)
}{\ttindex{__init__()
}}
592 \obindex{class instance
}
594 \indexii{class object
}{call
}
596 \item[Class instances
]
597 Class instances are described below. Class instances are callable
598 only when the class has a
\method{__call__()
} method;
\code{x(arguments)
}
599 is a shorthand for
\code{x.__call__(arguments)
}.
604 Modules are imported by the
\keyword{import
} statement (see
605 section~
\ref{import
}, ``The
\keyword{import
} statement'').
606 A module object has a namespace implemented by a dictionary object
607 (this is the dictionary referenced by the func_globals attribute of
608 functions defined in the module). Attribute references are translated
609 to lookups in this dictionary, e.g.,
\code{m.x
} is equivalent to
610 \code{m.__dict__
["x"
]}.
611 A module object does not contain the code object used to
612 initialize the module (since it isn't needed once the initialization
617 Attribute assignment updates the module's namespace dictionary,
618 e.g.,
\samp{m.x =
1} is equivalent to
\samp{m.__dict__
["x"
] =
1}.
620 Special read-only attribute:
\member{__dict__
} is the module's
621 namespace as a dictionary object.
622 \withsubitem{(module attribute)
}{\ttindex{__dict__
}}
624 Predefined (writable) attributes:
\member{__name__
}
625 is the module's name;
\member{__doc__
} is the
626 module's documentation string, or
627 \code{None
} if unavailable;
\member{__file__
} is the pathname of the
628 file from which the module was loaded, if it was loaded from a file.
629 The
\member{__file__
} attribute is not present for C
{} modules that are
630 statically linked into the interpreter; for extension modules loaded
631 dynamically from a shared library, it is the pathname of the shared
633 \withsubitem{(module attribute)
}{
637 \indexii{module
}{namespace
}
640 Class objects are created by class definitions (see
641 section~
\ref{class
}, ``Class definitions'').
642 A class has a namespace implemented by a dictionary object.
643 Class attribute references are translated to
644 lookups in this dictionary,
645 e.g.,
\samp{C.x
} is translated to
\samp{C.__dict__
["x"
]}.
646 When the attribute name is not found
647 there, the attribute search continues in the base classes. The search
648 is depth-first, left-to-right in the order of occurrence in the
650 When a class attribute reference would yield a user-defined function
651 object, it is transformed into an unbound user-defined method object
652 (see above). The
\member{im_class
} attribute of this method object is the
653 class for which the attribute reference was initiated.
655 \obindex{class instance
}
657 \indexii{class object
}{call
}
660 \indexii{class
}{attribute
}
662 Class attribute assignments update the class's dictionary, never the
663 dictionary of a base class.
664 \indexiii{class
}{attribute
}{assignment
}
666 A class object can be called (see above) to yield a class instance (see
668 \indexii{class object
}{call
}
670 Special attributes:
\member{__name__
} is the class name;
671 \member{__module__
} is the module name in which the class was defined;
672 \member{__dict__
} is the dictionary containing the class's namespace;
673 \member{__bases__
} is a tuple (possibly empty or a singleton)
674 containing the base classes, in the order of their occurrence in the
675 base class list;
\member{__doc__
} is the class's documentation string,
676 or None if undefined.
677 \withsubitem{(class attribute)
}{
684 \item[Class instances
]
685 A class instance is created by calling a class object (see above).
686 A class instance has a namespace implemented as a dictionary which
687 is the first place in which
688 attribute references are searched. When an attribute is not found
689 there, and the instance's class has an attribute by that name,
690 the search continues with the class attributes. If a class attribute
691 is found that is a user-defined function object (and in no other
692 case), it is transformed into an unbound user-defined method object
693 (see above). The
\member{im_class
} attribute of this method object is
695 class of the instance for which the attribute reference was initiated.
696 If no class attribute is found, and the object's class has a
697 \method{__getattr__()
} method, that is called to satisfy the lookup.
698 \obindex{class instance
}
700 \indexii{class
}{instance
}
701 \indexii{class instance
}{attribute
}
703 Attribute assignments and deletions update the instance's dictionary,
704 never a class's dictionary. If the class has a
\method{__setattr__()
} or
705 \method{__delattr__()
} method, this is called instead of updating the
706 instance dictionary directly.
707 \indexiii{class instance
}{attribute
}{assignment
}
709 Class instances can pretend to be numbers, sequences, or mappings if
710 they have methods with certain special names. See
711 section~
\ref{specialnames
}, ``Special method names.''
716 Special attributes:
\member{__dict__
} is the attribute
717 dictionary;
\member{__class__
} is the instance's class.
718 \withsubitem{(instance attribute)
}{
723 A file
\obindex{file
} object represents an open file. File objects are
724 created by the
\function{open()
}\bifuncindex{open
} built-in function,
726 \withsubitem{(in module os)
}{\ttindex{popen()
}}\function{os.popen()
},
727 \function{os.fdopen()
}, and the
728 \method{makefile()
}\withsubitem{(socket method)
}{\ttindex{makefile()
}}
729 method of socket objects (and perhaps by other functions or methods
730 provided by extension modules). The objects
731 \ttindex{sys.stdin
}\code{sys.stdin
},
732 \ttindex{sys.stdout
}\code{sys.stdout
} and
733 \ttindex{sys.stderr
}\code{sys.stderr
} are initialized to file objects
734 corresponding to the interpreter's standard
\index{stdio
} input, output
735 and error streams. See the
\citetitle[../lib/lib.html
]{Python Library
736 Reference
} for complete documentation of file objects.
737 \withsubitem{(in module sys)
}{
743 \item[Internal types
]
744 A few types used internally by the interpreter are exposed to the user.
745 Their definitions may change with future versions of the interpreter,
746 but they are mentioned here for completeness.
747 \index{internal type
}
748 \index{types, internal
}
753 Code objects represent
\emph{byte-compiled
} executable Python code, or
755 The difference between a code
756 object and a function object is that the function object contains an
757 explicit reference to the function's globals (the module in which it
758 was defined), while a code object contains no context;
759 also the default argument values are stored in the function object,
760 not in the code object (because they represent values calculated at
761 run-time). Unlike function objects, code objects are immutable and
762 contain no references (directly or indirectly) to mutable objects.
766 Special read-only attributes:
\member{co_name
} gives the function
767 name;
\member{co_argcount
} is the number of positional arguments
768 (including arguments with default values);
\member{co_nlocals
} is the
769 number of local variables used by the function (including arguments);
770 \member{co_varnames
} is a tuple containing the names of the local
771 variables (starting with the argument names);
\member{co_cellvars
} is
772 a tuple containing the names of local variables that are referenced by
773 nested functions;
\member{co_freevars
} is a tuple containing the names
774 of free variables;
\member{co_code
} is a string representing the
775 sequence of bytecode instructions;
776 \member{co_consts
} is a tuple containing the literals used by the
777 bytecode;
\member{co_names
} is a tuple containing the names used by
778 the bytecode;
\member{co_filename
} is the filename from which the code
779 was compiled;
\member{co_firstlineno
} is the first line number of the
780 function;
\member{co_lnotab
} is a string encoding the mapping from
781 byte code offsets to line numbers (for details see the source code of
782 the interpreter);
\member{co_stacksize
} is the required stack size
783 (including local variables);
\member{co_flags
} is an integer encoding
784 a number of flags for the interpreter.
786 \withsubitem{(code object attribute)
}{
787 \ttindex{co_argcount
}
790 \ttindex{co_filename
}
791 \ttindex{co_firstlineno
}
797 \ttindex{co_stacksize
}
798 \ttindex{co_varnames
}
799 \ttindex{co_cellvars
}
800 \ttindex{co_freevars
}}
802 The following flag bits are defined for
\member{co_flags
}: bit
803 \code{0x04} is set if the function uses the
\samp{*arguments
} syntax
804 to accept an arbitrary number of positional arguments; bit
805 \code{0x08} is set if the function uses the
\samp{**keywords
} syntax
806 to accept arbitrary keyword arguments; bit
\code{0x20} is set if the
807 function is a
\obindex{generator
}.
809 Future feature declarations (
\samp{from __future__ import division
})
810 also use bits in
\member{co_flags
} to indicate whether a code object
811 was compiled with a particular feature enabled: bit
\code{0x2000} is
812 set if the function was compiled with future division enabled; bits
813 \code{0x10} and
\code{0x1000} were used in earlier versions of Python.
815 Other bits in
\member{co_flags
} are reserved for internal use.
817 If
\index{documentation string
} a code object represents a function,
819 \member{co_consts
} is the documentation string of the function, or
820 \code{None
} if undefined.
823 Frame objects represent execution frames. They may occur in traceback
827 Special read-only attributes:
\member{f_back
} is to the previous
828 stack frame (towards the caller), or
\code{None
} if this is the bottom
829 stack frame;
\member{f_code
} is the code object being executed in this
830 frame;
\member{f_locals
} is the dictionary used to look up local
831 variables;
\member{f_globals
} is used for global variables;
832 \member{f_builtins
} is used for built-in (intrinsic) names;
833 \member{f_restricted
} is a flag indicating whether the function is
834 executing in restricted execution mode;
\member{f_lasti
} gives the
835 precise instruction (this is an index into the bytecode string of
837 \withsubitem{(frame attribute)
}{
844 \ttindex{f_restricted
}}
846 Special writable attributes:
\member{f_trace
}, if not
\code{None
}, is a
847 function called at the start of each source code line (this is used by
848 the debugger);
\member{f_exc_type
},
\member{f_exc_value
},
849 \member{f_exc_traceback
} represent the most recent exception caught in
850 this frame;
\member{f_lineno
} is the current line number of the frame
851 --- writing to this from within a trace function jumps to the given line
852 (only for the bottom-most frame). A debugger can implement a Jump
853 command (aka Set Next Statement) by writing to f_lineno.
854 \withsubitem{(frame attribute)
}{
857 \ttindex{f_exc_value
}
858 \ttindex{f_exc_traceback
}
861 \item[Traceback objects
] \label{traceback
}
862 Traceback objects represent a stack trace of an exception. A
863 traceback object is created when an exception occurs. When the search
864 for an exception handler unwinds the execution stack, at each unwound
865 level a traceback object is inserted in front of the current
866 traceback. When an exception handler is entered, the stack trace is
867 made available to the program.
868 (See section~
\ref{try
}, ``The
\code{try
} statement.'')
869 It is accessible as
\code{sys.exc_traceback
}, and also as the third
870 item of the tuple returned by
\code{sys.exc_info()
}. The latter is
871 the preferred interface, since it works correctly when the program is
872 using multiple threads.
873 When the program contains no suitable handler, the stack trace is written
874 (nicely formatted) to the standard error stream; if the interpreter is
875 interactive, it is also made available to the user as
876 \code{sys.last_traceback
}.
878 \indexii{stack
}{trace
}
879 \indexii{exception
}{handler
}
880 \indexii{execution
}{stack
}
881 \withsubitem{(in module sys)
}{
883 \ttindex{exc_traceback
}
884 \ttindex{last_traceback
}}
885 \ttindex{sys.exc_info
}
886 \ttindex{sys.exc_traceback
}
887 \ttindex{sys.last_traceback
}
889 Special read-only attributes:
\member{tb_next
} is the next level in the
890 stack trace (towards the frame where the exception occurred), or
891 \code{None
} if there is no next level;
\member{tb_frame
} points to the
892 execution frame of the current level;
\member{tb_lineno
} gives the line
893 number where the exception occurred;
\member{tb_lasti
} indicates the
894 precise instruction. The line number and last instruction in the
895 traceback may differ from the line number of its frame object if the
896 exception occurred in a
\keyword{try
} statement with no matching
897 except clause or with a finally clause.
898 \withsubitem{(traceback attribute)
}{
906 Slice objects are used to represent slices when
\emph{extended slice
907 syntax
} is used. This is a slice using two colons, or multiple slices
908 or ellipses separated by commas, e.g.,
\code{a
[i:j:step
]},
\code{a
[i:j,
909 k:l
]}, or
\code{a
[..., i:j
])
}. They are also created by the built-in
910 \function{slice()
}\bifuncindex{slice
} function.
912 Special read-only attributes:
\member{start
} is the lower bound;
913 \member{stop
} is the upper bound;
\member{step
} is the step value; each is
914 \code{None
} if omitted. These attributes can have any type.
915 \withsubitem{(slice object attribute)
}{
920 Slice objects support one method:
922 \begin{methoddesc
}[slice
]{indices
}{self, length
}
923 This method takes a single integer argument
\var{length
} and computes
924 information about the extended slice that the slice object would
925 describe if applied to a sequence of
\var{length
} items. It returns a
926 tuple of three integers; respectively these are the
\var{start
} and
927 \var{stop
} indices and the
\var{step
} or stride length of the slice.
928 Missing or out-of-bounds indices are handled in a manner consistent
933 \end{description
} % Internal types
935 \end{description
} % Types
938 \section{Special method names
\label{specialnames
}}
940 A class can implement certain operations that are invoked by special
941 syntax (such as arithmetic operations or subscripting and slicing) by
942 defining methods with special names.
\indexii{operator
}{overloading
}
943 This is Python's approach to
\dfn{operator overloading
}, allowing
944 classes to define their own behavior with respect to language
945 operators. For instance, if a class defines
946 a method named
\method{__getitem__()
}, and
\code{x
} is an instance of
947 this class, then
\code{x
[i
]} is equivalent to
948 \code{x.__getitem__(i)
}. Except where mentioned, attempts to execute
949 an operation raise an exception when no appropriate method is defined.
950 \withsubitem{(mapping object method)
}{\ttindex{__getitem__()
}}
952 When implementing a class that emulates any built-in type, it is
953 important that the emulation only be implemented to the degree that it
954 makes sense for the object being modelled. For example, some
955 sequences may work well with retrieval of individual elements, but
956 extracting a slice may not make sense. (One example of this is the
957 \class{NodeList
} interface in the W3C's Document Object Model.)
960 \subsection{Basic customization
\label{customization
}}
962 \begin{methoddesc
}[object
]{__init__
}{self
\optional{,
\moreargs}}
963 Called
\indexii{class
}{constructor
} when the instance is created. The
964 arguments are those passed to the class constructor expression. If a
965 base class has an
\method{__init__()
} method, the derived class's
966 \method{__init__()
} method, if any, must explicitly call it to ensure proper
967 initialization of the base class part of the instance; for example:
968 \samp{BaseClass.__init__(
\var{self
},
[\var{args
}...
])
}. As a special
969 contraint on constructors, no value may be returned; doing so will
970 cause a
\exception{TypeError
} to be raised at runtime.
974 \begin{methoddesc
}[object
]{__del__
}{self
}
975 Called when the instance is about to be destroyed. This is also
976 called a destructor
\index{destructor
}. If a base class
977 has a
\method{__del__()
} method, the derived class's
\method{__del__()
}
979 must explicitly call it to ensure proper deletion of the base class
980 part of the instance. Note that it is possible (though not recommended!)
981 for the
\method{__del__()
}
982 method to postpone destruction of the instance by creating a new
983 reference to it. It may then be called at a later time when this new
984 reference is deleted. It is not guaranteed that
985 \method{__del__()
} methods are called for objects that still exist when
986 the interpreter exits.
990 \samp{del x
} doesn't directly call
991 \code{x.__del__()
} --- the former decrements the reference count for
992 \code{x
} by one, and the latter is only called when
\code{x
}'s reference
993 count reaches zero. Some common situations that may prevent the
994 reference count of an object from going to zero include: circular
995 references between objects (e.g., a doubly-linked list or a tree data
996 structure with parent and child pointers); a reference to the object
997 on the stack frame of a function that caught an exception (the
998 traceback stored in
\code{sys.exc_traceback
} keeps the stack frame
999 alive); or a reference to the object on the stack frame that raised an
1000 unhandled exception in interactive mode (the traceback stored in
1001 \code{sys.last_traceback
} keeps the stack frame alive). The first
1002 situation can only be remedied by explicitly breaking the cycles; the
1003 latter two situations can be resolved by storing
\code{None
} in
1004 \code{sys.exc_traceback
} or
\code{sys.last_traceback
}. Circular
1005 references which are garbage are detected when the option cycle
1006 detector is enabled (it's on by default), but can only be cleaned up
1007 if there are no Python-level
\method{__del__()
} methods involved.
1008 Refer to the documentation for the
\ulink{\module{gc
}
1009 module
}{../lib/module-gc.html
} for more information about how
1010 \method{__del__()
} methods are handled by the cycle detector,
1011 particularly the description of the
\code{garbage
} value.
1014 \begin{notice
}[warning
]
1015 Due to the precarious circumstances under which
1016 \method{__del__()
} methods are invoked, exceptions that occur during their
1017 execution are ignored, and a warning is printed to
\code{sys.stderr
}
1018 instead. Also, when
\method{__del__()
} is invoked in response to a module
1019 being deleted (e.g., when execution of the program is done), other
1020 globals referenced by the
\method{__del__()
} method may already have been
1021 deleted. For this reason,
\method{__del__()
} methods should do the
1022 absolute minimum needed to maintain external invariants. Starting with
1023 version
1.5, Python guarantees that globals whose name begins with a single
1024 underscore are deleted from their module before other globals are deleted;
1025 if no other references to such globals exist, this may help in assuring that
1026 imported modules are still available at the time when the
1027 \method{__del__()
} method is called.
1031 \begin{methoddesc
}[object
]{__repr__
}{self
}
1032 Called by the
\function{repr()
}\bifuncindex{repr
} built-in function
1033 and by string conversions (reverse quotes) to compute the ``official''
1034 string representation of an object. If at all possible, this should
1035 look like a valid Python expression that could be used to recreate an
1036 object with the same value (given an appropriate environment). If
1037 this is not possible, a string of the form
\samp{<
\var{...some useful
1038 description...
}>
} should be returned. The return value must be a
1040 If a class defines
\method{__repr__()
} but not
\method{__str__()
},
1041 then
\method{__repr__()
} is also used when an ``informal'' string
1042 representation of instances of that class is required.
1044 This is typically used for debugging, so it is important that the
1045 representation is information-rich and unambiguous.
1046 \indexii{string
}{conversion
}
1047 \indexii{reverse
}{quotes
}
1048 \indexii{backward
}{quotes
}
1052 \begin{methoddesc
}[object
]{__str__
}{self
}
1053 Called by the
\function{str()
}\bifuncindex{str
} built-in function and
1054 by the
\keyword{print
}\stindex{print
} statement to compute the
1055 ``informal'' string representation of an object. This differs from
1056 \method{__repr__()
} in that it does not have to be a valid Python
1057 expression: a more convenient or concise representation may be used
1058 instead. The return value must be a string object.
1061 \begin{methoddesc
}[object
]{__lt__
}{self, other
}
1062 \methodline[object
]{__le__
}{self, other
}
1063 \methodline[object
]{__eq__
}{self, other
}
1064 \methodline[object
]{__ne__
}{self, other
}
1065 \methodline[object
]{__gt__
}{self, other
}
1066 \methodline[object
]{__ge__
}{self, other
}
1068 These are the so-called ``rich comparison'' methods, and are called
1069 for comparison operators in preference to
\method{__cmp__()
} below.
1070 The correspondence between operator symbols and method names is as
1072 \code{\var{x
}<
\var{y
}} calls
\code{\var{x
}.__lt__(
\var{y
})
},
1073 \code{\var{x
}<=
\var{y
}} calls
\code{\var{x
}.__le__(
\var{y
})
},
1074 \code{\var{x
}==
\var{y
}} calls
\code{\var{x
}.__eq__(
\var{y
})
},
1075 \code{\var{x
}!=
\var{y
}} and
\code{\var{x
}<>
\var{y
}} call
1076 \code{\var{x
}.__ne__(
\var{y
})
},
1077 \code{\var{x
}>
\var{y
}} calls
\code{\var{x
}.__gt__(
\var{y
})
}, and
1078 \code{\var{x
}>=
\var{y
}} calls
\code{\var{x
}.__ge__(
\var{y
})
}.
1079 These methods can return any value, but if the comparison operator is
1080 used in a Boolean context, the return value should be interpretable as
1081 a Boolean value, else a
\exception{TypeError
} will be raised.
1082 By convention,
\code{False
} is used for false and
\code{True
} for true.
1084 There are no reflected (swapped-argument) versions of these methods
1085 (to be used when the left argument does not support the operation but
1086 the right argument does); rather,
\method{__lt__()
} and
1087 \method{__gt__()
} are each other's reflection,
\method{__le__()
} and
1088 \method{__ge__()
} are each other's reflection, and
\method{__eq__()
}
1089 and
\method{__ne__()
} are their own reflection.
1091 Arguments to rich comparison methods are never coerced. A rich
1092 comparison method may return
\code{NotImplemented
} if it does not
1093 implement the operation for a given pair of arguments.
1096 \begin{methoddesc
}[object
]{__cmp__
}{self, other
}
1097 Called by comparison operations if rich comparison (see above) is not
1098 defined. Should return a negative integer if
\code{self < other
},
1099 zero if
\code{self == other
}, a positive integer if
\code{self >
1100 other
}. If no
\method{__cmp__()
},
\method{__eq__()
} or
1101 \method{__ne__()
} operation is defined, class instances are compared
1102 by object identity (``address''). See also the description of
1103 \method{__hash__()
} for some important notes on creating objects which
1104 support custom comparison operations and are usable as dictionary
1106 (Note: the restriction that exceptions are not propagated by
1107 \method{__cmp__()
} has been removed since Python
1.5.)
1112 \begin{methoddesc
}[object
]{__rcmp__
}{self, other
}
1113 \versionchanged[No longer supported
]{2.1}
1116 \begin{methoddesc
}[object
]{__hash__
}{self
}
1117 Called for the key object for dictionary
\obindex{dictionary
}
1118 operations, and by the built-in function
1119 \function{hash()
}\bifuncindex{hash
}. Should return a
32-bit integer
1120 usable as a hash value
1121 for dictionary operations. The only required property is that objects
1122 which compare equal have the same hash value; it is advised to somehow
1123 mix together (e.g., using exclusive or) the hash values for the
1124 components of the object that also play a part in comparison of
1125 objects. If a class does not define a
\method{__cmp__()
} method it should
1126 not define a
\method{__hash__()
} operation either; if it defines
1127 \method{__cmp__()
} or
\method{__eq__()
} but not
\method{__hash__()
},
1128 its instances will not be usable as dictionary keys. If a class
1129 defines mutable objects and implements a
\method{__cmp__()
} or
1130 \method{__eq__()
} method, it should not implement
\method{__hash__()
},
1131 since the dictionary implementation requires that a key's hash value
1132 is immutable (if the object's hash value changes, it will be in the
1134 \withsubitem{(object method)
}{\ttindex{__cmp__()
}}
1137 \begin{methoddesc
}[object
]{__nonzero__
}{self
}
1138 Called to implement truth value testing, and the built-in operation
1139 \code{bool()
}; should return
\code{False
} or
\code{True
}, or their
1140 integer equivalents
\code{0} or
\code{1}.
1141 When this method is not defined,
\method{__len__()
} is
1142 called, if it is defined (see below). If a class defines neither
1143 \method{__len__()
} nor
\method{__nonzero__()
}, all its instances are
1145 \withsubitem{(mapping object method)
}{\ttindex{__len__()
}}
1148 \begin{methoddesc
}[object
]{__unicode__
}{self
}
1149 Called to implement
\function{unicode()
}\bifuncindex{unicode
} builtin;
1150 should return a Unicode object. When this method is not defined, string
1151 conversion is attempted, and the result of string conversion is converted
1152 to Unicode using the system default encoding.
1156 \subsection{Customizing attribute access
\label{attribute-access
}}
1158 The following methods can be defined to customize the meaning of
1159 attribute access (use of, assignment to, or deletion of
\code{x.name
})
1160 for class instances.
1162 \begin{methoddesc
}[object
]{__getattr__
}{self, name
}
1163 Called when an attribute lookup has not found the attribute in the
1164 usual places (i.e. it is not an instance attribute nor is it found in
1165 the class tree for
\code{self
}).
\code{name
} is the attribute name.
1166 This method should return the (computed) attribute value or raise an
1167 \exception{AttributeError
} exception.
1169 Note that if the attribute is found through the normal mechanism,
1170 \method{__getattr__()
} is not called. (This is an intentional
1171 asymmetry between
\method{__getattr__()
} and
\method{__setattr__()
}.)
1172 This is done both for efficiency reasons and because otherwise
1173 \method{__setattr__()
} would have no way to access other attributes of
1174 the instance. Note that at least for instance variables, you can fake
1175 total control by not inserting any values in the instance attribute
1176 dictionary (but instead inserting them in another object). See the
1177 \method{__getattribute__()
} method below for a way to actually get
1178 total control in new-style classes.
1179 \withsubitem{(object method)
}{\ttindex{__setattr__()
}}
1182 \begin{methoddesc
}[object
]{__setattr__
}{self, name, value
}
1183 Called when an attribute assignment is attempted. This is called
1184 instead of the normal mechanism (i.e.\ store the value in the instance
1185 dictionary).
\var{name
} is the attribute name,
\var{value
} is the
1186 value to be assigned to it.
1188 If
\method{__setattr__()
} wants to assign to an instance attribute, it
1189 should not simply execute
\samp{self.
\var{name
} = value
} --- this
1190 would cause a recursive call to itself. Instead, it should insert the
1191 value in the dictionary of instance attributes, e.g.,
1192 \samp{self.__dict__
[\var{name
}] = value
}. For new-style classes,
1193 rather than accessing the instance dictionary, it should call the base
1194 class method with the same name, for example,
1195 \samp{object.__setattr__(self, name, value)
}.
1196 \withsubitem{(instance attribute)
}{\ttindex{__dict__
}}
1199 \begin{methoddesc
}[object
]{__delattr__
}{self, name
}
1200 Like
\method{__setattr__()
} but for attribute deletion instead of
1201 assignment. This should only be implemented if
\samp{del
1202 obj.
\var{name
}} is meaningful for the object.
1205 \subsubsection{More attribute access for new-style classes
\label{new-style-attribute-access
}}
1207 The following methods only apply to new-style classes.
1209 \begin{methoddesc
}[object
]{__getattribute__
}{self, name
}
1210 Called unconditionally to implement attribute accesses for instances
1211 of the class. If the class also defines
\method{__getattr__
}, it will
1212 never be called (unless called explicitly).
1213 This method should return the (computed) attribute
1214 value or raise an
\exception{AttributeError
} exception.
1215 In order to avoid infinite recursion in this method, its
1216 implementation should always call the base class method with the same
1217 name to access any attributes it needs, for example,
1218 \samp{object.__getattribute__(self, name)
}.
1221 \subsubsection{Implementing Descriptors
\label{descriptors
}}
1223 The following methods only apply when an instance of the class
1224 containing the method (a so-called
\emph{descriptor
} class) appears in
1225 the class dictionary of another new-style class, known as the
1226 \emph{owner
} class. In the examples below, ``the attribute'' refers to
1227 the attribute whose name is the key of the property in the owner
1228 class'
\code{__dict__
}.
1230 \begin{methoddesc
}[object
]{__get__
}{self, instance, owner
}
1231 Called to get the attribute of the owner class (class attribute access)
1232 or of an instance of that class (instance attribute acces).
1233 \var{owner
} is always the owner class, while
\var{instance
} is the
1234 instance that the attribute was accessed through, or
\code{None
} when
1235 the attribute is accessed through the
\var{owner
}. This method should
1236 return the (computed) attribute value or raise an
1237 \exception{AttributeError
} exception.
1240 \begin{methoddesc
}[object
]{__set__
}{self, instance, value
}
1241 Called to set the attribute on an instance
\var{instance
} of the owner
1242 class to a new value,
\var{value
}.
1245 \begin{methoddesc
}[object
]{__delete__
}{self, instance
}
1246 Called to delete the attribute on an instance
\var{instance
} of the
1251 \subsection{Emulating callable objects
\label{callable-types
}}
1253 \begin{methoddesc
}[object
]{__call__
}{self
\optional{, args...
}}
1254 Called when the instance is ``called'' as a function; if this method
1255 is defined,
\code{\var{x
}(arg1, arg2, ...)
} is a shorthand for
1256 \code{\var{x
}.__call__(arg1, arg2, ...)
}.
1257 \indexii{call
}{instance
}
1261 \subsection{Emulating container types
\label{sequence-types
}}
1263 The following methods can be defined to implement container
1264 objects. Containers usually are sequences (such as lists or tuples)
1265 or mappings (like dictionaries), but can represent other containers as
1266 well. The first set of methods is used either to emulate a
1267 sequence or to emulate a mapping; the difference is that for a
1268 sequence, the allowable keys should be the integers
\var{k
} for which
1269 \code{0 <=
\var{k
} <
\var{N
}} where
\var{N
} is the length of the
1270 sequence, or slice objects, which define a range of items. (For backwards
1271 compatibility, the method
\method{__getslice__()
} (see below) can also be
1272 defined to handle simple, but not extended slices.) It is also recommended
1273 that mappings provide the methods
\method{keys()
},
\method{values()
},
1274 \method{items()
},
\method{has_key()
},
\method{get()
},
\method{clear()
},
1275 \method{setdefault()
},
\method{iterkeys()
},
\method{itervalues()
},
1276 \method{iteritems()
},
\method{pop()
},
\method{popitem()
},
1277 \method{copy()
}, and
\method{update()
} behaving similar to those for
1278 Python's standard dictionary objects. The
\module{UserDict
} module
1279 provides a
\class{DictMixin
} class to help create those methods
1280 from a base set of
\method{__getitem__()
},
\method{__setitem__()
},
1281 \method{__delitem__()
}, and
\method{keys()
}.
1282 Mutable sequences should provide
1283 methods
\method{append()
},
\method{count()
},
\method{index()
},
1285 \method{insert()
},
\method{pop()
},
\method{remove()
},
\method{reverse()
}
1286 and
\method{sort()
}, like Python standard list objects. Finally,
1287 sequence types should implement addition (meaning concatenation) and
1288 multiplication (meaning repetition) by defining the methods
1289 \method{__add__()
},
\method{__radd__()
},
\method{__iadd__()
},
1290 \method{__mul__()
},
\method{__rmul__()
} and
\method{__imul__()
} described
1291 below; they should not define
\method{__coerce__()
} or other numerical
1292 operators. It is recommended that both mappings and sequences
1293 implement the
\method{__contains__()
} method to allow efficient use of
1294 the
\code{in
} operator; for mappings,
\code{in
} should be equivalent
1295 of
\method{has_key()
}; for sequences, it should search through the
1296 values. It is further recommended that both mappings and sequences
1297 implement the
\method{__iter__()
} method to allow efficient iteration
1298 through the container; for mappings,
\method{__iter__()
} should be
1299 the same as
\method{iterkeys()
}; for sequences, it should iterate
1301 \withsubitem{(mapping object method)
}{
1305 \ttindex{iterkeys()
}
1306 \ttindex{itervalues()
}
1307 \ttindex{iteritems()
}
1310 \ttindex{setdefault()
}
1316 \ttindex{__contains__()
}}
1317 \withsubitem{(sequence object method)
}{
1328 \ttindex{__radd__()
}
1329 \ttindex{__iadd__()
}
1331 \ttindex{__rmul__()
}
1332 \ttindex{__imul__()
}
1333 \ttindex{__contains__()
}
1334 \ttindex{__iter__()
}}
1335 \withsubitem{(numeric object method)
}{\ttindex{__coerce__()
}}
1337 \begin{methoddesc
}[container object
]{__len__
}{self
}
1338 Called to implement the built-in function
1339 \function{len()
}\bifuncindex{len
}. Should return the length of the
1340 object, an integer
\code{>=
} 0. Also, an object that doesn't define a
1341 \method{__nonzero__()
} method and whose
\method{__len__()
} method
1342 returns zero is considered to be false in a Boolean context.
1343 \withsubitem{(object method)
}{\ttindex{__nonzero__()
}}
1346 \begin{methoddesc
}[container object
]{__getitem__
}{self, key
}
1347 Called to implement evaluation of
\code{\var{self
}[\var{key
}]}.
1348 For sequence types, the accepted keys should be integers and slice
1349 objects.
\obindex{slice
} Note that
1350 the special interpretation of negative indexes (if the class wishes to
1351 emulate a sequence type) is up to the
\method{__getitem__()
} method.
1352 If
\var{key
} is of an inappropriate type,
\exception{TypeError
} may be
1353 raised; if of a value outside the set of indexes for the sequence
1354 (after any special interpretation of negative values),
1355 \exception{IndexError
} should be raised.
1356 \note{\keyword{for
} loops expect that an
1357 \exception{IndexError
} will be raised for illegal indexes to allow
1358 proper detection of the end of the sequence.
}
1361 \begin{methoddesc
}[container object
]{__setitem__
}{self, key, value
}
1362 Called to implement assignment to
\code{\var{self
}[\var{key
}]}. Same
1363 note as for
\method{__getitem__()
}. This should only be implemented
1364 for mappings if the objects support changes to the values for keys, or
1365 if new keys can be added, or for sequences if elements can be
1366 replaced. The same exceptions should be raised for improper
1367 \var{key
} values as for the
\method{__getitem__()
} method.
1370 \begin{methoddesc
}[container object
]{__delitem__
}{self, key
}
1371 Called to implement deletion of
\code{\var{self
}[\var{key
}]}. Same
1372 note as for
\method{__getitem__()
}. This should only be implemented
1373 for mappings if the objects support removal of keys, or for sequences
1374 if elements can be removed from the sequence. The same exceptions
1375 should be raised for improper
\var{key
} values as for the
1376 \method{__getitem__()
} method.
1379 \begin{methoddesc
}[container object
]{__iter__
}{self
}
1380 This method is called when an iterator is required for a container.
1381 This method should return a new iterator object that can iterate over
1382 all the objects in the container. For mappings, it should iterate
1383 over the keys of the container, and should also be made available as
1384 the method
\method{iterkeys()
}.
1386 Iterator objects also need to implement this method; they are required
1387 to return themselves. For more information on iterator objects, see
1388 ``
\ulink{Iterator Types
}{../lib/typeiter.html
}'' in the
1389 \citetitle[../lib/lib.html
]{Python Library Reference
}.
1392 The membership test operators (
\keyword{in
} and
\keyword{not in
}) are
1393 normally implemented as an iteration through a sequence. However,
1394 container objects can supply the following special method with a more
1395 efficient implementation, which also does not require the object be a
1398 \begin{methoddesc
}[container object
]{__contains__
}{self, item
}
1399 Called to implement membership test operators. Should return true if
1400 \var{item
} is in
\var{self
}, false otherwise. For mapping objects,
1401 this should consider the keys of the mapping rather than the values or
1406 \subsection{Additional methods for emulation of sequence types
1407 \label{sequence-methods
}}
1409 The following optional methods can be defined to further emulate sequence
1410 objects. Immutable sequences methods should at most only define
1411 \method{__getslice__()
}; mutable sequences might define all three
1414 \begin{methoddesc
}[sequence object
]{__getslice__
}{self, i, j
}
1415 \deprecated{2.0}{Support slice objects as parameters to the
1416 \method{__getitem__()
} method.
}
1417 Called to implement evaluation of
\code{\var{self
}[\var{i
}:
\var{j
}]}.
1418 The returned object should be of the same type as
\var{self
}. Note
1419 that missing
\var{i
} or
\var{j
} in the slice expression are replaced
1420 by zero or
\code{sys.maxint
}, respectively. If negative indexes are
1421 used in the slice, the length of the sequence is added to that index.
1422 If the instance does not implement the
\method{__len__()
} method, an
1423 \exception{AttributeError
} is raised.
1424 No guarantee is made that indexes adjusted this way are not still
1425 negative. Indexes which are greater than the length of the sequence
1427 If no
\method{__getslice__()
} is found, a slice
1428 object is created instead, and passed to
\method{__getitem__()
} instead.
1431 \begin{methoddesc
}[sequence object
]{__setslice__
}{self, i, j, sequence
}
1432 Called to implement assignment to
\code{\var{self
}[\var{i
}:
\var{j
}]}.
1433 Same notes for
\var{i
} and
\var{j
} as for
\method{__getslice__()
}.
1435 This method is deprecated. If no
\method{__setslice__()
} is found,
1436 or for extended slicing of the form
1437 \code{\var{self
}[\var{i
}:
\var{j
}:
\var{k
}]}, a
1438 slice object is created, and passed to
\method{__setitem__()
},
1439 instead of
\method{__setslice__()
} being called.
1442 \begin{methoddesc
}[sequence object
]{__delslice__
}{self, i, j
}
1443 Called to implement deletion of
\code{\var{self
}[\var{i
}:
\var{j
}]}.
1444 Same notes for
\var{i
} and
\var{j
} as for
\method{__getslice__()
}.
1445 This method is deprecated. If no
\method{__delslice__()
} is found,
1446 or for extended slicing of the form
1447 \code{\var{self
}[\var{i
}:
\var{j
}:
\var{k
}]}, a
1448 slice object is created, and passed to
\method{__delitem__()
},
1449 instead of
\method{__delslice__()
} being called.
1452 Notice that these methods are only invoked when a single slice with a
1453 single colon is used, and the slice method is available. For slice
1454 operations involving extended slice notation, or in absence of the
1455 slice methods,
\method{__getitem__()
},
\method{__setitem__()
} or
1456 \method{__delitem__()
} is called with a slice object as argument.
1458 The following example demonstrate how to make your program or module
1459 compatible with earlier versions of Python (assuming that methods
1460 \method{__getitem__()
},
\method{__setitem__()
} and
\method{__delitem__()
}
1461 support slice objects as arguments):
1466 def __getitem__(self, index):
1468 def __setitem__(self, index, value):
1470 def __delitem__(self, index):
1473 if sys.version_info < (
2,
0):
1474 # They won't be defined if version is at least
2.0 final
1476 def __getslice__(self, i, j):
1477 return self
[max(
0, i):max(
0, j):
]
1478 def __setslice__(self, i, j, seq):
1479 self
[max(
0, i):max(
0, j):
] = seq
1480 def __delslice__(self, i, j):
1481 del self
[max(
0, i):max(
0, j):
]
1485 Note the calls to
\function{max()
}; these are necessary because of
1486 the handling of negative indices before the
1487 \method{__*slice__()
} methods are called. When negative indexes are
1488 used, the
\method{__*item__()
} methods receive them as provided, but
1489 the
\method{__*slice__()
} methods get a ``cooked'' form of the index
1490 values. For each negative index value, the length of the sequence is
1491 added to the index before calling the method (which may still result
1492 in a negative index); this is the customary handling of negative
1493 indexes by the built-in sequence types, and the
\method{__*item__()
}
1494 methods are expected to do this as well. However, since they should
1495 already be doing that, negative indexes cannot be passed in; they must
1496 be be constrained to the bounds of the sequence before being passed to
1497 the
\method{__*item__()
} methods.
1498 Calling
\code{max(
0, i)
} conveniently returns the proper value.
1501 \subsection{Emulating numeric types
\label{numeric-types
}}
1503 The following methods can be defined to emulate numeric objects.
1504 Methods corresponding to operations that are not supported by the
1505 particular kind of number implemented (e.g., bitwise operations for
1506 non-integral numbers) should be left undefined.
1508 \begin{methoddesc
}[numeric object
]{__add__
}{self, other
}
1509 \methodline[numeric object
]{__sub__
}{self, other
}
1510 \methodline[numeric object
]{__mul__
}{self, other
}
1511 \methodline[numeric object
]{__floordiv__
}{self, other
}
1512 \methodline[numeric object
]{__mod__
}{self, other
}
1513 \methodline[numeric object
]{__divmod__
}{self, other
}
1514 \methodline[numeric object
]{__pow__
}{self, other
\optional{, modulo
}}
1515 \methodline[numeric object
]{__lshift__
}{self, other
}
1516 \methodline[numeric object
]{__rshift__
}{self, other
}
1517 \methodline[numeric object
]{__and__
}{self, other
}
1518 \methodline[numeric object
]{__xor__
}{self, other
}
1519 \methodline[numeric object
]{__or__
}{self, other
}
1521 called to implement the binary arithmetic operations (
\code{+
},
1522 \code{-
},
\code{*
},
\code{//
},
\code{\%
},
1523 \function{divmod()
}\bifuncindex{divmod
},
1524 \function{pow()
}\bifuncindex{pow
},
\code{**
},
\code{<
}\code{<
},
1525 \code{>
}\code{>
},
\code{\&
},
\code{\^
},
\code{|
}). For instance, to
1526 evaluate the expression
\var{x
}\code{+
}\var{y
}, where
\var{x
} is an
1527 instance of a class that has an
\method{__add__()
} method,
1528 \code{\var{x
}.__add__(
\var{y
})
} is called. The
\method{__divmod__()
}
1529 method should be the equivalent to using
\method{__floordiv__()
} and
1530 \method{__mod__()
}; it should not be related to
\method{__truediv__()
}
1531 (described below). Note that
1532 \method{__pow__()
} should be defined to accept an optional third
1533 argument if the ternary version of the built-in
1534 \function{pow()
}\bifuncindex{pow
} function is to be supported.
1537 \begin{methoddesc
}[numeric object
]{__div__
}{self, other
}
1538 \methodline[numeric object
]{__truediv__
}{self, other
}
1539 The division operator (
\code{/
}) is implemented by these methods. The
1540 \method{__truediv__()
} method is used when
\code{__future__.division
}
1541 is in effect, otherwise
\method{__div__()
} is used. If only one of
1542 these two methods is defined, the object will not support division in
1543 the alternate context;
\exception{TypeError
} will be raised instead.
1546 \begin{methoddesc
}[numeric object
]{__radd__
}{self, other
}
1547 \methodline[numeric object
]{__rsub__
}{self, other
}
1548 \methodline[numeric object
]{__rmul__
}{self, other
}
1549 \methodline[numeric object
]{__rdiv__
}{self, other
}
1550 \methodline[numeric object
]{__rtruediv__
}{self, other
}
1551 \methodline[numeric object
]{__rfloordiv__
}{self, other
}
1552 \methodline[numeric object
]{__rmod__
}{self, other
}
1553 \methodline[numeric object
]{__rdivmod__
}{self, other
}
1554 \methodline[numeric object
]{__rpow__
}{self, other
}
1555 \methodline[numeric object
]{__rlshift__
}{self, other
}
1556 \methodline[numeric object
]{__rrshift__
}{self, other
}
1557 \methodline[numeric object
]{__rand__
}{self, other
}
1558 \methodline[numeric object
]{__rxor__
}{self, other
}
1559 \methodline[numeric object
]{__ror__
}{self, other
}
1561 called to implement the binary arithmetic operations (
\code{+
},
1562 \code{-
},
\code{*
},
\code{/
},
\code{\%
},
1563 \function{divmod()
}\bifuncindex{divmod
},
1564 \function{pow()
}\bifuncindex{pow
},
\code{**
},
\code{<
}\code{<
},
1565 \code{>
}\code{>
},
\code{\&
},
\code{\^
},
\code{|
}) with reflected
1566 (swapped) operands. These functions are only called if the left
1567 operand does not support the corresponding operation. For instance,
1568 to evaluate the expression
\var{x
}\code{-
}\var{y
}, where
\var{y
} is an
1569 instance of a class that has an
\method{__rsub__()
} method,
1570 \code{\var{y
}.__rsub__(
\var{x
})
} is called. Note that ternary
1571 \function{pow()
}\bifuncindex{pow
} will not try calling
1572 \method{__rpow__()
} (the coercion rules would become too
1576 \begin{methoddesc
}[numeric object
]{__iadd__
}{self, other
}
1577 \methodline[numeric object
]{__isub__
}{self, other
}
1578 \methodline[numeric object
]{__imul__
}{self, other
}
1579 \methodline[numeric object
]{__idiv__
}{self, other
}
1580 \methodline[numeric object
]{__itruediv__
}{self, other
}
1581 \methodline[numeric object
]{__ifloordiv__
}{self, other
}
1582 \methodline[numeric object
]{__imod__
}{self, other
}
1583 \methodline[numeric object
]{__ipow__
}{self, other
\optional{, modulo
}}
1584 \methodline[numeric object
]{__ilshift__
}{self, other
}
1585 \methodline[numeric object
]{__irshift__
}{self, other
}
1586 \methodline[numeric object
]{__iand__
}{self, other
}
1587 \methodline[numeric object
]{__ixor__
}{self, other
}
1588 \methodline[numeric object
]{__ior__
}{self, other
}
1589 These methods are called to implement the augmented arithmetic
1590 operations (
\code{+=
},
\code{-=
},
\code{*=
},
\code{/=
},
\code{\%=
},
1591 \code{**=
},
\code{<
}\code{<=
},
\code{>
}\code{>=
},
\code{\&=
},
1592 \code{\^=
},
\code{|=
}). These methods should attempt to do the
1593 operation in-place (modifying
\var{self
}) and return the result (which
1594 could be, but does not have to be,
\var{self
}). If a specific method
1595 is not defined, the augmented operation falls back to the normal
1596 methods. For instance, to evaluate the expression
1597 \var{x
}\code{+=
}\var{y
}, where
\var{x
} is an instance of a class that
1598 has an
\method{__iadd__()
} method,
\code{\var{x
}.__iadd__(
\var{y
})
} is
1599 called. If
\var{x
} is an instance of a class that does not define a
1600 \method{__iadd()
} method,
\code{\var{x
}.__add__(
\var{y
})
} and
1601 \code{\var{y
}.__radd__(
\var{x
})
} are considered, as with the
1602 evaluation of
\var{x
}\code{+
}\var{y
}.
1605 \begin{methoddesc
}[numeric object
]{__neg__
}{self
}
1606 \methodline[numeric object
]{__pos__
}{self
}
1607 \methodline[numeric object
]{__abs__
}{self
}
1608 \methodline[numeric object
]{__invert__
}{self
}
1609 Called to implement the unary arithmetic operations (
\code{-
},
1610 \code{+
},
\function{abs()
}\bifuncindex{abs
} and
\code{\~
{}}).
1613 \begin{methoddesc
}[numeric object
]{__complex__
}{self
}
1614 \methodline[numeric object
]{__int__
}{self
}
1615 \methodline[numeric object
]{__long__
}{self
}
1616 \methodline[numeric object
]{__float__
}{self
}
1617 Called to implement the built-in functions
1618 \function{complex()
}\bifuncindex{complex
},
1619 \function{int()
}\bifuncindex{int
},
\function{long()
}\bifuncindex{long
},
1620 and
\function{float()
}\bifuncindex{float
}. Should return a value of
1621 the appropriate type.
1624 \begin{methoddesc
}[numeric object
]{__oct__
}{self
}
1625 \methodline[numeric object
]{__hex__
}{self
}
1626 Called to implement the built-in functions
1627 \function{oct()
}\bifuncindex{oct
} and
1628 \function{hex()
}\bifuncindex{hex
}. Should return a string value.
1631 \begin{methoddesc
}[numeric object
]{__coerce__
}{self, other
}
1632 Called to implement ``mixed-mode'' numeric arithmetic. Should either
1633 return a
2-tuple containing
\var{self
} and
\var{other
} converted to
1634 a common numeric type, or
\code{None
} if conversion is impossible. When
1635 the common type would be the type of
\code{other
}, it is sufficient to
1636 return
\code{None
}, since the interpreter will also ask the other
1637 object to attempt a coercion (but sometimes, if the implementation of
1638 the other type cannot be changed, it is useful to do the conversion to
1639 the other type here). A return value of
\code{NotImplemented
} is
1640 equivalent to returning
\code{None
}.
1643 \subsection{Coercion rules
\label{coercion-rules
}}
1645 This section used to
document the rules for coercion. As the language
1646 has evolved, the coercion rules have become hard to
document
1647 precisely; documenting what one version of one particular
1648 implementation does is undesirable. Instead, here are some informal
1649 guidelines regarding coercion. In Python
3.0, coercion will not be
1656 If the left operand of a \% operator is a string or Unicode object, no
1657 coercion takes place and the string formatting operation is invoked
1662 It is no longer recommended to define a coercion operation.
1663 Mixed-mode operations on types that don't define coercion pass the
1664 original arguments to the operation.
1668 New-style classes (those derived from
\class{object
}) never invoke the
1669 \method{__coerce__()
} method in response to a binary operator; the only
1670 time
\method{__coerce__()
} is invoked is when the built-in function
1671 \function{coerce()
} is called.
1675 For most intents and purposes, an operator that returns
1676 \code{NotImplemented
} is treated the same as one that is not
1681 Below,
\method{__op__()
} and
\method{__rop__()
} are used to signify
1682 the generic method names corresponding to an operator;
1683 \method{__iop__
} is used for the corresponding in-place operator. For
1684 example, for the operator `
\code{+
}',
\method{__add__()
} and
1685 \method{__radd__()
} are used for the left and right variant of the
1686 binary operator, and
\method{__iadd__
} for the in-place variant.
1690 For objects
\var{x
} and
\var{y
}, first
\code{\var{x
}.__op__(
\var{y
})
}
1691 is tried. If this is not implemented or returns
\code{NotImplemented
},
1692 \code{\var{y
}.__rop__(
\var{x
})
} is tried. If this is also not
1693 implemented or returns
\code{NotImplemented
}, a
\exception{TypeError
}
1694 exception is raised. But see the following exception:
1698 Exception to the previous item: if the left operand is an instance of
1699 a built-in type or a new-style class, and the right operand is an
1700 instance of a proper subclass of that type or class, the right
1701 operand's
\method{__rop__()
} method is tried
\emph{before
} the left
1702 operand's
\method{__op__()
} method. This is done so that a subclass can
1703 completely override binary operators. Otherwise, the left operand's
1704 __op__ method would always accept the right operand: when an instance
1705 of a given class is expected, an instance of a subclass of that class
1706 is always acceptable.
1710 When either operand type defines a coercion, this coercion is called
1711 before that type's
\method{__op__()
} or
\method{__rop__()
} method is
1712 called, but no sooner. If the coercion returns an object of a
1713 different type for the operand whose coercion is invoked, part of the
1714 process is redone using the new object.
1718 When an in-place operator (like `
\code{+=
}') is used, if the left
1719 operand implements
\method{__iop__()
}, it is invoked without any
1720 coercion. When the operation falls back to
\method{__op__()
} and/or
1721 \method{__rop__()
}, the normal coercion rules apply.
1725 In
\var{x
}\code{+
}\var{y
}, if
\var{x
} is a sequence that implements
1726 sequence concatenation, sequence concatenation is invoked.
1730 In
\var{x
}\code{*
}\var{y
}, if one operator is a sequence that
1731 implements sequence repetition, and the other is an integer
1732 (
\class{int
} or
\class{long
}), sequence repetition is invoked.
1736 Rich comparisons (implemented by methods
\method{__eq__()
} and so on)
1737 never use coercion. Three-way comparison (implemented by
1738 \method{__cmp__()
}) does use coercion under the same conditions as
1739 other binary operations use it.
1743 In the current implementation, the built-in numeric types
\class{int
},
1744 \class{long
} and
\class{float
} do not use coercion; the type
1745 \class{complex
} however does use it. The difference can become
1746 apparent when subclassing these types. Over time, the type
1747 \class{complex
} may be fixed to avoid coercion. All these types
1748 implement a
\method{__coerce__()
} method, for use by the built-in
1749 \function{coerce()
} function.