#
3.3 Special method names

A class can implement certain operations that are invoked by special syntax (such as arithmetic operations or subscripting and slicing) by defining methods with special names. For instance, if a class defines a method named `__getitem__()`, and `x` is an instance of this class, then `x[i]` is equivalent to `x.__getitem__(i)`. (The reverse is not true -- if `x` is a list object, `x.__getitem__(i)` is not equivalent to `x[i]`.) Except where mentioned, attempts to execute an operation raise an exception when no appropriate method is defined.

- 3.3.1 Basic customization
- 3.3.2 Customizing attribute access
- 3.3.3 Emulating callable objects
- 3.3.4 Emulating sequence and mapping types
- 3.3.5 Additional methods for emulation of sequence types
- 3.3.6 Emulating numeric types