【Python】isinstance()でオブジェクトの型判定を行う!

Pythonのisinstance()を使用すると、オブジェクトの型判定を行うことができます。

isinstance()とは指定したオブジェクトとクラスの結果を返す関数であり、指定したオブジェクトが指定したクラスなのかどうかをTrueかFalseで判定を行います。

その為、計算処理などを行う前の型チェックとしてisinstance()を使うととても便利です。

しかし、bool型をint型と判定するなどisinstance()仕様によって期待に沿わない場合がありますので注意してください。

今回はPythonのisinstance()でオブジェクトの型判定を行う方法について以下の内容で解説していきます。

⚫︎ プリミティブの型判定を行う場合
⚫︎ イテレータの型判定を行う場合
⚫︎ クラスの型判定を行う場合

⚫︎ isinstance()はbool型をint型と判定する
⚫︎ isinstance()の実践的な使い方

isinstance()とは

isinstance()とは、オブジェクトの型の判定を真偽値で返す関数となります。

isinstance()の書き方

isinstance()の書き方は下記となります。

isinstance()のパラメータ

⚫︎ オブジェクト:
型の判定を行いたいオブジェクトを指定する
⚫︎ クラス:
指定したオブジェクトのクラス名を指定する

isinstance()のパラメータにオブジェクトとクラスを指定することで、指定したオブジェクトが指定したクラス(型)かどうかを判定し、TrueやFalseの真偽値で返します。

オブジェクトの型判定を行うサンプルコード

isinstance()でオブジェクトの型判定を行うサンプルコードを紹介します。

プリミティブの型判定を行う場合

isinstance()でプリミティブの型の判定を行ってみます。



出力結果

isinstqnce()でプリミティブの型を判定する

・string型かどうか判定
文字列
結果 True

・int型かどうか判定
14
結果 True

・float型かどうか判定
14.6
結果 True

・bool型かどうか判定
True
結果 True

・int型かどうか判定
文字列2
結果 False

isinstance()でプリミティブな型を判定しています。

イテレータの型判定を行う場合

isinstance()でイテレータの型の判定を行ってみます。



出力結果

isinstance()でイテレータの型を判定する

・リストかどうかを判定する
[‘値1’, ‘値2’, ‘値3’, ‘値4’, ‘値5’]
結果 True

・タプルかどうかを判定する
(‘値1’, ‘値2’, ‘値3’, ‘値4’, ‘値5’)
結果 True

・辞書かどうかを判定する
{1: ‘値1’, 2: ‘値2’, 3: ‘値3’, 4: ‘値4’, 5: ‘値5’}
結果 True

・setかどうかを判定する
{‘値4’, ‘値3’, ‘値2’, ‘値1’, ‘値5’}
結果 True

・frozensetかどうかを判定する
frozenset({‘値2’, ‘値4’, ‘値1’, ‘値5’, ‘値3’})
結果 True

・タプルかどうかを判定する
[‘値1’, ‘値2’, ‘値3’, ‘値4’, ‘値5’]
結果 False

isinstance()でイテレータの型を判定しています。

クラスの型判定を行う場合

isinstance()でクラスの型の判定を行ってみます。



出力結果

isinstance()でクラスの型を判定

・親クラスと同じか判定
結果 True

・子クラスと同じか判定
結果 True

isinstance()でクラスの型を判定しています。

isinstance()はbool型をint型と判定する

これは、isinstance()の仕様になりますが、bool型の値に対してintで判定してしまうと「True」を返してしまいます。



出力結果

isinstance()で型の判定を行う

・bool型かどうか判定
True

isinstance()の実践的な使い方

isinstance()の実践的な使い方について紹介してきます。

次のコードは引数の値を使って計算を行うプログラムになります。



出力結果

・整数の計算を行う
計算処理を行う。
計算結果 47

計算処理を行う。
計算結果 21

・整数の計算を行う(エラー発生時)
エラー発生

計算を行う前に引数がint型であるかどうかをisinstance()で型判定を行っています。

そうすることで、計算処理を行う前にバグのチェックを防ぐことができますので、ボタンなどを押して入力された値を使って計算処理を行う場合は事前にisinstance()で型チェックを行うようにしましょう。

今回のポイント

isinstance()で型判定を行う

Pythonで型の判定を行うにはisinstance()を使用する。

⚫︎ isinstance()のパラメータにはオブジェクトクラスを指定する

⚫︎ isinstance()はプリミティブやイテレータ、クラスの型判定を行うことができる
(一致すればTrue、一致しなければFalseを返す)

⚫︎ isinstance()はbool型をint型と判定してしまう
(isinstance()の仕様の為)

関連記事

Pythonのtype()でオブジェクトの型の判定を行う方法について詳しく知りたい場合はこちらをご参考ください。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し