isinstance() 型チェック
最終更新:2026-09-22
isinstance() 型チェック
isinstance(obj, classinfo) は obj が classinfo のインスタンス(またはそのサブクラスのインスタンス)かどうかを判定する。classinfo はタプルでもよい。
| カテゴリ | 組み込み関数 |
|---|---|
| 種類 | 組み込み関数 |
| Python バージョン | all |
📝 構文
isinstance(object, classinfo)
⚙️ 引数
| object 必須 | The object to check. |
|---|---|
| classinfo 必須 | A type, or a tuple of types (union check). |
戻り値:True if object is an instance of classinfo (or any type in it).
💥 例外
TypeError— Raised when classinfo is not a type or a tuple of types.
▶ 例
下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:
実行結果:
True
True
False
🏷️ 関連する組み込み関数
💡 関連するケース
さらに多くのケースは近日公開予定です。
❓ よくある質問
Qisinstance(x, int) と type(x) == int の違いは何ですか?
Aisinstance は継承関係を考慮します(サブクラスのインスタンスでも True)。type(x) == int は型が完全に一致することを要求します。通常は isinstance のほうが柔軟です。
Qisinstance(True, int) は何を返しますか?
ATrue を返します。bool は int のサブクラスだからです。ブールと整数を区別したい場合は、type(x) is bool を追加で確認します。
Q第2引数に複数の型を渡せますか?
A渡せます。タプルを渡します:isinstance(x, (int, float)) はいずれか一致で True になります。classinfo が型や型のタプルでない場合は TypeError になります。
Qisinstance でインターフェースや抽象型を検査できますか?
Aできます。抽象基底クラスで動作します。例:isinstance(x, Iterable) や isinstance(x, collections.abc.Sequence)。具体的な型を調べるより堅牢です。