Staging
v0.5.1
https://github.com/python/cpython
Raw File
Tip revision: f8cdb5c56f6a14b62ffb3201de45f586fe3a6500 authored by cvs2svn on 02 February 2001, 21:24:51 UTC
This commit was manufactured by cvs2svn to create tag 'r21a2'.
Tip revision: f8cdb5c
class.doc
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.
back to top