変数が任意の型 ( int
、float
、Fraction
、Decimal
など) の数値のインスタンスであるかどうかを確認しようとしています。
私はこの質問とその答えに出くわしました:変数が数値であるかどうかを確認するために python の isinstance() を適切に使用する方法は?
ただし、 などの複素数は除外したいと思い1j
ます。
クラスnumbers.Real
は完璧に見えましたがFalse
、Decimal
数字を返します...
from numbers Real
from decimal import Decimal
print(isinstance(Decimal(1), Real))
# False
Fraction(1)
矛盾して、たとえば、それはうまく機能します。
ドキュメントには、数値で動作するはずのいくつかの操作が記載されています。10 進数のインスタンスでエラーなしでテストしました。さらに、10 進数オブジェクトに複素数を含めることはできません。
では、なぜisinstance(Decimal(1), Real)
戻るのでしょうFalse
か?