オブジェクトの型を確認するには標準組込み関数の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.11.2
まとめ
オブジェクトの型を確認する方法についてまとめました。
- 型を確認する: type()
- 型を判定する: isinstance()、type() (但し、type()はサブクラスまでは判定できない)
コメント
[…] php – is_int PHP isset, empty, is_null の違い早見表 js – 型変換のいろいろ 【Python】型を確認・判定する […]