Рассмотрим следующее:
from decimal import Decimal
from numbers import Number, Complex, Real
z = Decimal(0)
# Expected: a == b == c == True
# Actual (Python 3.6.5):
a = isinstance(z, Number) # True
b = isinstance(z, Complex) # False
c = isinstance(z, Real) # False
Кажется, что Decimal
реализует все, что нужно считать Real
соответствии с PEP3141, и что дает? Примечательно, что fractions.Fraction
правильно классифицирована по приведенному выше фрагменту (например, a == b == c == True
).
Это фактически упоминается в PEP 3141:
После консультации с его авторами было принято решение о том, что десятичный тип в это время не должен быть включен в числовую башню.
Так что Decimal
был намеренно исключен.