When creating new numbers (or extending existing numbers), we turn to the numbers module. This module contains the abstract definitions of Python's built-in numeric types. These types form a tall, narrow hierarchy, from the simplest to the most elaborate. In this context, simplicity (and elaborateness) refers to the collection of methods available.
There's an abstract base class named numbers.Number that defines all of the numeric and number-like classes. We can see that this is true by looking at interactions like the following one:
>>> import numbers >>> isinstance(42, numbers.Number) True >>> 355/113 3.1415929203539825 >>> isinstance(355/113, numbers.Number) True
Clearly, integer and float values are subclasses of the abstract numbers.Number class. The subclasses of Number include numbers.Complex, numbers...