質問がわかりません。
「代替手段」として投げかけられた、大きく異なるセマンティクスを持つ2つのものがあります。
型変換は 1 つのことです。をサポートするすべてのオブジェクトで機能し__float__
ます。これは、実際には数値であるオブジェクトはほとんどありません。
try:
myinput = float(input)
except:
raise ValueError("input is not a well-formed number")
# at this point, input may not be numeric at all
# it may, however, have produced a numeric value
タイプテストは別のものです。これは、特定のクラス セットの適切なインスタンスであるオブジェクトでのみ機能します。
isinstance(input, (float, int, long) )
# at this point, input is one of a known list of numeric types
に応答するクラスの例を次に示しますがfloat
、まだ数値ではありません。
class MyStrangeThing( object ):
def __init__( self, aString ):
# Some fancy parsing
def __float__( self ):
# extract some numeric value from my thing
「実数 (整数または浮動小数点数のいずれか)」という質問は、一般的に無関係です。多くのものは「数値」であり、数値演算で使用できますが、int または float ではありません。たとえば、有理数パッケージをダウンロードまたは作成したとします。
一部のタイプで機能しないアルゴリズムがない限り、入力を過大評価しても意味がありません。これらはまれですが、一部の計算では整数が必要です。具体的には、整数の除算と剰余演算を実行できるようにするためです。それらについては、値が int であることを主張したい場合があります。