1. はじめに
Pythonを学習する中で、変数やオブジェクトの「型」を判定したい場面は意外と多く存在します。そんなときに役立つのが、isinstance()関数です。
この記事では、「Python|isinstance()関数の使い方」をテーマに、基本的な使い方から実務で役立つ応用例までを丁寧に解説します。初心者〜中級者の方に向けて、具体的なコード例とともに解説していますので、ぜひ最後まで読んでください。
isinstance()関数を活用することで、型の安全な判定や条件分岐を行うことができ、より堅牢でバグの少ないコードを書くことができます。
2. isinstance関数とは?基本的な使い方
isinstance関数の概要
Pythonの組み込み関数 isinstance()
は、あるオブジェクトが特定のクラス(型)に属しているかどうかを判定するために使います。
構文は以下のとおりです。
isinstance(object, classinfo)
object
:型を判定したいオブジェクトclassinfo
:型またはクラス(またはそのタプル)
基本的な使用例
x = 10
# xがint型かどうかを判定
result = isinstance(x, int)
print(result)
実行結果:
True
このように、x
がint
型であればTrue
、そうでなければFalse
が返ります。
複数の型を同時に判定する
複数の型に対してチェックを行いたい場合は、タプルを使って指定することができます。
value = 3.14
# floatまたはintかを判定
print(isinstance(value, (int, float)))
実行結果:
True
このようにタプルを使うことで、複数の型に対応した柔軟なチェックが可能になります。
3. よくある使い方・応用例
関数の引数の型をチェックする
実務では、関数内で引数の型をチェックし、不正な型が渡された場合にエラーを出すといった処理がよく行われます。
def calculate_square(number):
if not isinstance(number, (int, float)):
raise TypeError("数値型を渡してください")
return number * number
print(calculate_square(4)) # OK
print(calculate_square("abc")) # TypeError
実行結果:
16
Traceback (most recent call last):
...
TypeError: 数値型を渡してください
このように、型チェックを行うことで予期せぬエラーの防止や、処理の安全性が向上します。
クラスの継承関係を利用したチェック
Pythonのクラスは継承が可能ですが、isinstance
はサブクラス(子クラス)にも対応しています。
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(isinstance(dog, Dog)) # True
print(isinstance(dog, Animal)) # True(継承元も判定される)
実行結果:
True
True
これは多態性(ポリモーフィズム)を扱う上で非常に便利な機能です。
データ型ごとの処理を分ける
データの型によって処理を変えたい場合にもisinstanceは有効です。
def process(value):
if isinstance(value, str):
return value.upper()
elif isinstance(value, int):
return value * 2
else:
return "不明な型です"
print(process("hello"))
print(process(7))
print(process([1, 2, 3]))
実行結果:
HELLO
14
不明な型です
4. isinstance関数の注意点・エラー対策
型名の指定ミス
型名を文字列で渡してしまう初学者のミスに注意が必要です。以下は誤った例です。
# 誤り:intを文字列として渡している
isinstance(10, "int") # TypeErrorになります
実行結果:
TypeError: isinstance() arg 2 must be a type or tuple of types
リストや辞書などのネストされた構造に注意
複数階層のデータ構造に対して判定を行う場合は、適切な位置でisinstanceを使用する必要があります。
たとえば、リストの中身の型を確認するには、ループと組み合わせて使います。
values = [1, 2, "three", 4]
for v in values:
if not isinstance(v, int):
print(f"{v} は整数ではありません")
実行結果:
three は整数ではありません
5. まとめ
本記事では、Pythonのisinstance関数について、基本的な使い方から応用例、注意点までを幅広く解説しました。
isinstance()
でオブジェクトの型判定ができる- 関数の引数チェックや条件分岐に活用できる
- 継承関係のあるクラスにも対応可能
- エラー回避のために型指定ミスに注意が必要
実務では、「入力された値が期待する型かをチェックする」「データの整合性を保つ」といったシーンで非常に有用です。
学習のコツとしては、実際にいくつかの型で試してみることが理解の近道です。シンプルな関数ですが、うまく使えばコードの堅牢性を高められます。
ぜひあなたのプロジェクトや学習コードにisinstance()
を取り入れてみてください。