(最終更新日:2023年7月)
✔このような方へ向けて書かれた記事となります
「Pythonのisinstance関数はどのように使うのか?」
「Pythonのisinstance関数について、その使い方や機能を学びたい」
「isinstance関数の実践例を知りたい」
✔当記事を通じてお伝えすること
- isinstance関数の基本概念
- isinstance関数の適切な使い方と応用方法
- isinstanceを用いた具体例
当記事では、Pythonのisinstance関数の基本概念から応用技法まで、実用例を交えて丁寧に解説しています。
最後までお読みください。
Pythonにおけるisinstance関数を理解するための前提知識
こちらでは、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関数の定義と構文
isinstance
関数の基本的な構文はこちら。
isinstance(object, classinfo)
object
は型を調べたいオブジェクト、classinfo
はクラス名またはクラスを要素とするタプルです。
この関数はobject
がclassinfo
のインスタンスである場合、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関数の違い
- bool型がint型として判定される理由
type関数とisinstance関数の違い
type
関数とisinstance
関数は似ていますが、違いがあります。
type
関数はオブジェクトの型をそのまま返しますが、isinstance
関数はオブジェクトが指定した型、またはそのサブクラスのインスタンスであるかを判定するもの。
またisinstance
関数は、継承関係を考慮した型判定が可能です。
bool型がint型として判定される理由
Pythonではbool
型はint
型のサブクラスとなっており、isinstance
関数を使ってTrue
やFalse
が、int
型か判定するとTrue
が返ります。
これはPythonの設計上の理由で、bool
型が0
と1
の値を持つ特殊な整数として扱われるためです。
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関数を使いこなして、適切な場面で使用してください。