1. ホーム
  2. python

[解決済み] 変数が整数であるかどうかのチェック【重複あり

2022-03-17 04:13:11

質問

変数が整数であるかどうかを確認する方法は?

どのように解決するのですか?

必要な場合は、次のようにします。

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

これは、Pythonの強力なポリモーフィズムに従ったものです。 int であることを義務づけるのではなく、そうでなければならないのです。

しかし

古典的なPythonの考え方ですが、それは 許可より許しを請う方が簡単 . つまり x が整数であることを仮定し、整数でない場合は例外結果をキャッチします。

try:
    x += 1
except TypeError:
    ...

このような考え方は、少しずつですが 抽象ベースクラス これは、特別に構成されたクラスを継承させることで、オブジェクトが持つべき特性(加算、乗算、倍加?)を正確に登録することができるものです。これは最良の解決策でしょう。 まさに 必要かつ十分な属性を持つオブジェクトを作成する必要がありますが、その使用方法についてはドキュメントを読む必要があります。