Python|isinstance()関数の使い方

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

このように、xint型であれば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()を取り入れてみてください。

タイトルとURLをコピーしました