変数が整数かどうかを確認するにはどうすればよいですか?
ベストアンサー1
これを行う必要がある場合は、
isinstance(<var>, int)
ただし、Python 2.xの場合は
isinstance(<var>, (int, long))
を使用しないでくださいtype
。これは、ポリモーフィズムの柔軟性をすべてブロックするため、Python ではほとんどの場合正しい答えではありません。たとえば、 をサブクラス化する場合int
、新しいクラスは として登録する必要がありますint
が、これは次の動作type
を行いません。
class Spam(int): pass
x = Spam(0)
type(x) == int # False
isinstance(x, int) # True
int
これは、Python の強力なポリモーフィズムに準拠しています。つまり、 であることを強制するのではなく、のように動作するオブジェクトを許可する必要があります。
しかし
しかし、古典的な Python の考え方では、permission を求めるよりも、 allowness を求める方が簡単です。言い換えると、 がx
整数かどうかをチェックするのではなく、整数であると想定し、そうでない場合は例外結果をキャッチします。
try:
x += 1
except TypeError:
...
この考え方は、抽象基本クラスでは、特別に構築されたクラスから継承することで、オブジェクトが持つべきプロパティ (加算? 乗算? 倍増?) を正確に登録できます。必要かつ十分な属性を持つオブジェクトを正確に許可するため、これが最善の解決策ですが、使用方法についてはドキュメントを読む必要があります。