【Python】型を確認・判定する(type関数、isinstance関数)

Python組込み関数

オブジェクトの型を確認するには標準組込み関数のtype()、判定するにはisinstance()を用います。
本記事ではこれらの関数の使い方について具体例と併せてまとめました。

オブジェクトの型を確認する

オブジェクトの型を確認するには、Pythonの標準の組込み関数のtype() を使います。
使い方は以下の通りです。

type(object)

引数objectに指定したオブジェクトの型を返します。
具体例を示します。

>>> x = 'abc' # 文字列
>>> type(x)
<class 'str'<

>>> x = 1 # 整数
>>> type(x)
<class 'int'<

>>> x = 1.2 # 浮動小数点
>>> type(x)
<class 'float'<

>>> x = [1, 2] # リスト
>>> type(x)
<class 'list'<

尚、この返り値はobject.__class__で返されるものと同じです。例えば、

# type()の返り値
>>> type('abc')
<class'str'>

# object.__class__の返り値
>>> 'abc'.__class__
<class'str'>

自前のクラスから生成したインスタンスも判定できます。

# クラス定義
>>> class Myclass:
...     s = 'abc'
...

# Myclassのインスタンスを生成
>>> f = Myclass()

# 型の確認
>>> type(f)
<class'__main__.Myclass'>

オブジェクトの型を判定する

オブジェクトの型を判定する場合は、isinstance() を使います。
使い方は以下です。

isinstance(object, classinfo)

引数objectが引数classinfoと一致した場合Trueを、一致しない場合はFalseを返します。
具体例を以下に示します。

# str型の判定(Ture)
>>> isinstance('abc', str)
True

# str型の判定(False)
>>> isinstance('abc', int)
False

# int型の判定(True)
>>> isinstance(10, int)
True

# list型の判定(True)
>>> isinstance([1, 2], list)
True

# Tuple型の判定(True)
>>> isinstance((1, 2), tuple)
True

自前のクラスから生成されたインスタンスオブジェクトのクラスも判定できます。

# クラス定義
>>> class Myclass:
...     s = 'abc'
...
# インスタンスを生成
>>> f = Myclass()

# 判定
>>> isinstance(f, Myclass)
True

また、派生クラスの場合は、その基底クラスも判定できます。

# 前述のMyclassの派生クラス
>>> class Myclass2(Myclass):
...     ss = 'xyz'
...

# インスタンスを生成
>>> g = Myclass2()

# 判定
>>> isinstance(g, Myclass2)
True

# 基底クラス(サブクラス)も判定可能
>>> isinstance(g, Myclass)
True

# 複数のクラスをtupleで記述しても判定可能
>>> isinstance(g, (Myclass, Myclass2))
True

尚、type()でも==演算子(またはis演算子)を使えば判定は可能です。

# str型の判定(Ture)
>>> type('abc') == str
True

# int型の判定(Ture)
>>> type(10) == int
True

但し、type()は派生クラスにおける基底クラスは出力できません。
そのため、公式リファレンスではisinstance()推奨 されています。

# Myclassインスタンスの判定
>>> type(f) == Myclass
True

# Myclass2インスタンスの判定
>>> type(g) == Myclass2
True

# Myclass2クラスの基底クラスはFalseになる
>>> type(g) == Myclass
False

環境

  • OS: Ubuntu20.04LTS@WSL2
  • Python3.9.7

まとめ

オブジェクトの型を確認する方法についてまとめました。

  • 型を確認する: type()
  • 型を判定する: isinstance()、type() (但し、type()はサブクラスまでは判定できない)

参考書籍

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

シェアする
ひびきをフォローする
Hbk project