annotate Demo/classes/class.doc @ 25838:8540887bcec6 2.2

Backport of 2.183: Fix memory leak in add_subclass() found by NealN with valgrind.
author Guido van Rossum <guido@python.org>
date Fri, 18 Oct 2002 13:42:21 +0000
parents 465b9841770e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 New features of classes
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 =======================
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 A class can implement certain operations that are invoked by special
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 syntax (such as subscription or arithmetic operations) by defining
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 methods with special names.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 Special methods for any type
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 ----------------------------
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 __repr__(self) --> string
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 Used by the print statement and conversions (reverse quotes) to
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 compute the string representation of an object.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 __cmp__(self, other) --> int
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 Used by all comparison operations. Should return -1 if self<other, 0
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 if self==other, +1 if self>other. Due to limitations in the
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 interpreter, exceptions raised by comparisons are ignored, and the
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 objects will be considered equal in this case.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 Special methods for sequence and mapping types
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 ----------------------------------------------
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 __len__(self) --> int
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 Used by the built-in function len(). Should return the length of the
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 object, which should be >= 0. Also, an object whose __len__() method
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 returns 0
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 __getitem__(self, key) --> value
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 Used to implement value = self[key]. Note that the special
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 interpretation of negative keys (if the class wishes to emulate a
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 sequence type) is up to the __getitem__ method.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 __setitem__(self, key, value)
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 Used to implement self[key] = value. Same note as for __getitem__.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 __delitem__(self, key)
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 Used to implement del self[key]. Same note as for __getitem__.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 Special methods for sequence types
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 ----------------------------------
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
51
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 __getslice__(self, i, j) --> sequence
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 Used to implement self[i:j]. Note that missing i or j are replaced by
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 0 or len(self), respectively, and len(self) has been added to negative
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 i or j.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
57
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 __setslice__(self, i, j, sequence)
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 Used to implement self[i:j] = value. Same note as for __getslice__.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 __delslice__(self, i, j)
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 Used to implement del self[i:j]. Same note as for __getslice__.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
65
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
66
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 Special methods for numeric types
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 ---------------------------------
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
69
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 __add__, __sub__, __mul__, __div__, __mod__, __divmod__, __pow__,
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 __lshift__, __rshift__, __and__, __xor__, __or__
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 Used to implement the binary arithmetic operations (divmod and pow are
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 called by built-in functions). All have the call pattern
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 func(self, other) --> number.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
76
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 __neg__, __pos__, __abs__, __invert__
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 Used to implement the unary arithmetic operations (-, +, abs and ~).
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 All have the call pattern func(self) --> number.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
81
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 __nonzero__(self) --> int
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
83
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 Used to implement boolean testing. An alternative name for this
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 method is __len__.
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
86
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 __coerce__(self, other) --> (self1, other1) or None
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
88
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
89 Used to implement "mixed-mode" numeric arithmetic. Either return a
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 tuple containing self and other converted to some common type, or None
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
91 if no way of conversion is known. When the common type would be the
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 type of other, it is sufficient to return None, since the interpreter
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 will also ask the other object to attempt a coercion (but sometimes,
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 if the implementation of the other type cannot be changed, it is
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 useful to do the conversion to the other type here).
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 __int__(self) --> int
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 __long__(self) --> long
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 __float__(self) --> float
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 Used to implement the built-in functions int(), long() and float().
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 Notes
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 -----
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 Except for __repr__ and __cmp__, when no appropriate method is
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 defined, attempts to execute the operation raise an exception. For
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 __repr__ and __cmp__, the traditional interpretations are used
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 in this case.