我嘗試檢查一個變量是否是任何類型的數字(int
,float
,Fraction
,Decimal
等)的一個實例。爲什麼不是 'decimal.Decimal(1)' 的 'numbers.Real' 的實例?
我翻過凸輪這個問題,它的答案是:How to properly use python's isinstance() to check if a variable is a number?
不過,我想排除複數,如1j
。
類numbers.Real
看上去完美,但它返回False
爲Decimal
數...
from numbers Real
from decimal import Decimal
print(isinstance(Decimal(1), Real))
# False
在矛盾,它正常工作與Fraction(1)
例如。
的documentation介紹了一些操作,這些操作應與數工作,我對它們進行測試沒有任何錯誤在小數實例。 另外,小數對象不能包含複數。
那麼,爲什麼isinstance(Decimal(1), Real)
將返回False
?
https://docs.python.org/3.6/library/numbers.html#the-numeric-tower –
@TomDalton我讀了它,但我仍然不明白。 '[isinstance(十進制(1)中,t)對於t在[號碼,複雜的,真實的,理性,積分]]'返回'[真,FALSE,FALSE,FALSE,FALSE]'。如果一個'Decimal'是一個'Number',爲什麼它不是它的子類? – Delgan