Pythonで整数であるか判定する方法を2つ紹介します。
type()
と==演算子
isinstance()
type()と==演算子
意外とtype()
と==演算子
だけで型の判定ができてしまいます。type()
はオブジェクトの型を得るための組み込み関数です。
ちなみに整数はint型です。
a = 2.3
print(type(a) == float)
# True
b = 4
print(type(b) == int)
# True
c = '5'
print(type(c) == int)
# False
isinstance()
isinstance()
は組み込み関数の1つで、オブジェクトがあるクラスのインスタンスであるかを判定します。
公式ドキュメントでの説明はこのようになっています。(翻訳処理適用)
isinstance(object, classinfo)
object が classinfo のインスタンス、またはその(直接、間接、仮想)サブクラスであるとき、真を返す。object が与えられた型のオブジェクトでない場合、この関数は常に False を返します。classinfoが型オブジェクトのタプル(または再帰的に他のタプル)、または複数の型のUnion Typeの場合、objectがいずれかの型のインスタンスであれば、Trueを返します。classinfoが型オブジェクトのタプル(または再帰的にそのようなタプル)でない場合、例外TypeErrorが発生します
組み込み関数 : https://docs.python.org/ja/3/library/functions.html#isinstance
isinstance()
を使って判定してみる。
a = 2.3
print(isinstance(a, float))
# True
b = 4
print(isinstance(b, int))
# True
c = '5'
print(isinstance(c, int))
# False
公式ドキュメントに則って、isinstance(object, classinfo)
だとするならobject
がclassinfo
自身のインスタンスでなくてもclassinfo
のサブクラスのインスタンスであればTrue
が返ってくるようです。注意しましょう。
class Test:
def test(self):
print('this is test.')
class Test2(Test):
def test2(self):
print('this is test2.')
test = Test()
test2 = Test2()
print(type(test2) == Test)
# False
print(isinstance(test2, Test))
# True
こちらも公式ドキュメントに書いてあることですがclassinfo
にタプルで与えることで複数の型を指定し、いずれかのインスタンスであればTrue
を返すという処理を行うことができます。
a = 2.3
print(isinstance(a, (int, float)))
# True
b = 4
print(isinstance(b, (float, str)))
# False
c = '5'
print(isinstance(c, (int, str)))
# True
コメント