【发布时间】:2018-04-24 13:03:56
【问题描述】:
我尝试检查一个变量是否是任何类型(int、float、Fraction、Decimal 等)的实例。
我遇到了这个问题及其答案:How to properly use python's isinstance() to check if a variable is a number?
但是,我想排除复数,例如 1j。
numbers.Real 类看起来很完美,但它为 Decimal 数字返回 False...
from numbers Real
from decimal import Decimal
print(isinstance(Decimal(1), Real))
# False
与此相反,例如 Fraction(1) 可以正常工作。
documentation 描述了一些应该使用数字的操作,我在十进制实例上测试它们没有任何错误。 此外,十进制对象不能包含复数。
那么,为什么isinstance(Decimal(1), Real) 会返回False?
【问题讨论】:
-
@TomDalton 我读过它,但我还是不明白。
[isinstance(Decimal(1), t) for t in [Number, Complex, Real, Rational, Integral]]返回[True, False, False, False, False]。如果Decimal是Number,为什么它不是它的任何子类?
标签: python numbers decimal isinstance