mirror of https://github.com/python/cpython
111 lines
3.2 KiB
Plaintext
111 lines
3.2 KiB
Plaintext
|
New features of classes
|
||
|
=======================
|
||
|
|
||
|
A class can implement certain operations that are invoked by special
|
||
|
syntax (such as subscription or arithmetic operations) by defining
|
||
|
methods with special names.
|
||
|
|
||
|
|
||
|
Special methods for any type
|
||
|
----------------------------
|
||
|
|
||
|
__repr__(self) --> string
|
||
|
|
||
|
Used by the print statement and conversions (reverse quotes) to
|
||
|
compute the string representation of an object.
|
||
|
|
||
|
__cmp__(self, other) --> int
|
||
|
|
||
|
Used by all comparison operations. Should return -1 if self<other, 0
|
||
|
if self==other, +1 if self>other. Due to limitations in the
|
||
|
interpreter, exceptions raised by comparisons are ignored, and the
|
||
|
objects will be considered equal in this case.
|
||
|
|
||
|
|
||
|
Special methods for sequence and mapping types
|
||
|
----------------------------------------------
|
||
|
|
||
|
__len__(self) --> int
|
||
|
|
||
|
Used by the built-in function len(). Should return the length of the
|
||
|
object, which should be >= 0. Also, an object whose __len__() method
|
||
|
returns 0
|
||
|
|
||
|
__getitem__(self, key) --> value
|
||
|
|
||
|
Used to implement value = self[key]. Note that the special
|
||
|
interpretation of negative keys (if the class wishes to emulate a
|
||
|
sequence type) is up to the __getitem__ method.
|
||
|
|
||
|
__setitem__(self, key, value)
|
||
|
|
||
|
Used to implement self[key] = value. Same note as for __getitem__.
|
||
|
|
||
|
__delitem__(self, key)
|
||
|
|
||
|
Used to implement del self[key]. Same note as for __getitem__.
|
||
|
|
||
|
|
||
|
Special methods for sequence types
|
||
|
----------------------------------
|
||
|
|
||
|
__getslice__(self, i, j) --> sequence
|
||
|
|
||
|
Used to implement self[i:j]. Note that missing i or j are replaced by
|
||
|
0 or len(self), respectively, and len(self) has been added to negative
|
||
|
i or j.
|
||
|
|
||
|
__setslice__(self, i, j, sequence)
|
||
|
|
||
|
Used to implement self[i:j] = value. Same note as for __getslice__.
|
||
|
|
||
|
__delslice__(self, i, j)
|
||
|
|
||
|
Used to implement del self[i:j]. Same note as for __getslice__.
|
||
|
|
||
|
|
||
|
Special methods for numeric types
|
||
|
---------------------------------
|
||
|
|
||
|
__add__, __sub__, __mul__, __div__, __mod__, __divmod__, __pow__,
|
||
|
__lshift__, __rshift__, __and__, __xor__, __or__
|
||
|
|
||
|
Used to implement the binary arithmetic operations (divmod and pow are
|
||
|
called by built-in functions). All have the call pattern
|
||
|
func(self, other) --> number.
|
||
|
|
||
|
__neg__, __pos__, __abs__, __invert__
|
||
|
|
||
|
Used to implement the unary arithmetic operations (-, +, abs and ~).
|
||
|
All have the call pattern func(self) --> number.
|
||
|
|
||
|
__nonzero__(self) --> int
|
||
|
|
||
|
Used to implement boolean testing. An alternative name for this
|
||
|
method is __len__.
|
||
|
|
||
|
__coerce__(self, other) --> (self1, other1) or None
|
||
|
|
||
|
Used to implement "mixed-mode" numeric arithmetic. Either return a
|
||
|
tuple containing self and other converted to some common type, or None
|
||
|
if no way of conversion is known. When the common type would be the
|
||
|
type of other, it is sufficient to return None, since the interpreter
|
||
|
will also ask the other object to attempt a coercion (but sometimes,
|
||
|
if the implementation of the other type cannot be changed, it is
|
||
|
useful to do the conversion to the other type here).
|
||
|
|
||
|
__int__(self) --> int
|
||
|
__long__(self) --> long
|
||
|
__float__(self) --> float
|
||
|
|
||
|
Used to implement the built-in functions int(), long() and float().
|
||
|
|
||
|
|
||
|
Notes
|
||
|
-----
|
||
|
|
||
|
Except for __repr__ and __cmp__, when no appropriate method is
|
||
|
defined, attempts to execute the operation raise an exception. For
|
||
|
__repr__ and __cmp__, the traditional interpretations are used
|
||
|
in this case.
|