| 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. |