変数が整数かどうかを確認する [重複] 質問する

変数が整数かどうかを確認する [重複] 質問する

変数が整数かどうかを確認するにはどうすればよいですか?

ベストアンサー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:
    ...

この考え方は、抽象基本クラスでは、特別に構築されたクラスから継承することで、オブジェクトが持つべきプロパティ (加算? 乗算? 倍増?) を正確に登録できます。必要かつ十分な属性を持つオブジェクトを正確に許可するため、これが最善の解決策ですが、使用方法についてはドキュメントを読む必要があります。

おすすめ記事