サイトアイコン ITC Media

【Python】isinstance関数の使い方|実例付

(最終更新日:2023年7月)

✔このような方へ向けて書かれた記事となります

「Pythonのisinstance関数はどのように使うのか?」
「Pythonのisinstance関数について、その使い方や機能を学びたい」
「isinstance関数の実践例を知りたい」

✔当記事を通じてお伝えすること

当記事では、Pythonのisinstance関数の基本概念から応用技法まで、実用例を交えて丁寧に解説しています。

最後までお読みください。

筆者プロフィール

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Pythonにおけるisinstance関数を理解するための前提知識

こちらでは、Pythonの型確認に関する基本的な事項と、isinstance関数についてお伝えしていきます。

Pythonの型確認の重要性

Pythonでは変数の型を明示的に宣言する必要はありませんが、型確認は非常に重要です。

型確認により、コードの可読性を高め、予期せぬエラーを防止できます。

例えば整数と文字列を足し合わせようとするとエラーが発生しますが、型確認をおこなうことでこのような問題を事前に察知できるのです。

isinstance関数の概要

isinstance関数は、オブジェクトの型を判定する際に使用される、Pythonの組み込み関数です。

指定されたオブジェクトが、指定されたクラスまたはタプルで指定されたクラスのいずれかのインスタンスであるかどうかを判定します。

# オブジェクトの型を判定する
value = 123

if isinstance(value, int):
    print("valueは整数型です")
else:
    print("valueは整数型ではありません")

isinstance関数の基本概念

こちらでは、isinstance関数の定義と基本的な構文についてお伝えします。

isinstance関数の定義と構文

isinstance関数の基本的な構文はこちら。

isinstance(object, classinfo)

objectは型を調べたいオブジェクト、classinfoはクラス名またはクラスを要素とするタプルです。

この関数はobjectclassinfoのインスタンスである場合、Trueを返し、そうでない場合はFalseを返します。

# オブジェクトの型を判定する
value = "Hello"

if isinstance(value, str):
    print("valueは文字列型です")
else:
    print("valueは文字列型ではありません")

isinstance関数のパラメータについて

isinstance関数の第二引数classinfoには、単一のクラスだけでなく、複数のクラスをタプルとして渡すことも可能です。

オブジェクトが複数のクラスのいずれかのインスタンスであるかどうかを判定できます。

isinstance関数を使った型判定の方法

こちらでは、isinstance関数を使用した具体的な型判定の例をいくつか示します。

プリミティブ型の判定例

プリミティブ型(例えば整数や浮動小数点数)の型判定をisinstance関数でおこなえます。

例として、num = 5という変数が整数型かどうかを判定する場合は以下のとおり。

num = 5

if isinstance(num, int):
    print("numは整数型です")
else:
    print("numは整数型ではありません")

#出力:numは整数型です

イテレータ型の判定例

リストやタプルなどのイテレータ型も同様に判定できます。

my_list = [1, 2, 3]がリスト型かどうかを判定する例です。

my_list = [1, 2, 3]

if isinstance(my_list, list):
    print("my_listはリスト型です")
else:
    print("my_listはリスト型ではありません")

# 出力:my_listはリスト型です

クラス型の判定例

自分で定義したクラスのインスタンスであるかの判定も可能です。

例えば、class Dog:というクラスを定義し、my_dog = Dog()としてインスタンスを生成した場合、isinstance(my_dog, Dog)Trueを返します。

class Dog:
    pass

my_dog = Dog()

if isinstance(my_dog, Dog):
    print("my_dogはDogクラスのインスタンスです")
else:
    print("my_dogはDogクラスのインスタンスではありません")

#出力:my_dogはDogクラスのインスタンスです

isinstance関数の特徴

こちらでは、isinstance関数の特徴と、type関数との違いについて説明します。

type関数とisinstance関数の違い

type関数とisinstance関数は似ていますが、違いがあります。

type関数はオブジェクトの型をそのまま返しますが、isinstance関数はオブジェクトが指定した型、またはそのサブクラスのインスタンスであるかを判定するもの。

またisinstance関数は、継承関係を考慮した型判定が可能です。

bool型がint型として判定される理由

Pythonではbool型はint型のサブクラスとなっており、isinstance関数を使ってTrueFalseが、int型か判定するとTrueが返ります。

これはPythonの設計上の理由で、bool型が01の値を持つ特殊な整数として扱われるためです。

isinstance関数の実践的な使い方

こちらでは、isinstance関数のより実践的な使い方を紹介します。

複数の型を一度に確認する方法

isinstance関数の第二引数にタプルを使って複数の型を指定することで、オブジェクトが複数の型のいずれかであるかを一度に確認可能です。

value1 = 10
value2 = 3.14
value3 = "Hello"

if isinstance(value1, (int, float)):
    print("value1は整数または浮動小数点数です")
else:
    print("value1は整数または浮動小数点数ではありません")

if isinstance(value2, (int, float)):
    print("value2は整数または浮動小数点数です")
else:
    print("value2は整数または浮動小数点数ではありません")

if isinstance(value3, (int, float)):
    print("value3は整数または浮動小数点数です")
else:
    print("value3は整数または浮動小数点数ではありません")

リスト内の要素の型確認例

リスト内の要素が特定の型であるかを確認する場合にもisinstance関数が役立ちます。

例えば、全ての要素が整数であるかを確認する場合、次のようなコードを書くことができます。

my_list = [1, 2, 3, 4]
if all(isinstance(item, int) for item in my_list):
    print("All items are integers")

入力データチェックに活用する例

isinstance関数はユーザーからの入力データの型をチェックする際にも役立ちます。

ユーザー入力が予期せぬ型である場合にエラーを出力するか、データを修正するように促すために使用できます。

user_input = input("数字を入力してください: ")

if isinstance(user_input, int):
    print("入力されたデータは整数です")
elif isinstance(user_input, float):
    print("入力されたデータは浮動小数点数です")
else:
    print("入力されたデータは数値ではありません")

まとめ

isinstance関数はPythonの組み込み関数で、オブジェクトの型を確認するために使用されます。

オブジェクトが特定の型または複数の型のいずれかであるかを判定するもの。

また、type関数とは異なり、isinstance関数は継承関係も考慮します。

型確認をおこなうことで、コードの可読性を向上させ、予期せぬエラーを防止できるでしょう。

isinstance関数を使いこなして、適切な場面で使用してください。

モバイルバージョンを終了