Support Python’s numbers abstract base class#
See also
PEP 3141 for more information about numbers
.
- sage.rings.numbers_abc.register_sage_classes()#
Register all relevant Sage classes in the
numbers
hierarchy.EXAMPLES:
sage: import numbers sage: isinstance(5, numbers.Integral) True sage: isinstance(5, numbers.Number) True sage: isinstance(5/1, numbers.Integral) False sage: isinstance(22/7, numbers.Rational) True sage: isinstance(1.3, numbers.Real) True sage: isinstance(CC(1.3), numbers.Real) False sage: isinstance(CC(1.3 + I), numbers.Complex) True sage: isinstance(RDF(1.3), numbers.Real) True sage: isinstance(CDF(1.3, 4), numbers.Complex) True sage: isinstance(AA(sqrt(2)), numbers.Real) True sage: isinstance(QQbar(I), numbers.Complex) True
This doesn’t work with symbolic expressions at all:
sage: isinstance(pi, numbers.Real) False sage: isinstance(I, numbers.Complex) False sage: isinstance(sqrt(2), numbers.Real) False
Because we do this, NumPy’s
isscalar()
recognizes Sage types:sage: from numpy import isscalar # optional - numpy sage: isscalar(3.141) # optional - numpy True sage: isscalar(4/17) # optional - numpy True