用語比較
isinstance()とissubclass()の違い|調べる対象はインスタンスか、クラスか(Python3基礎)
isinstance()とissubclass()は、どちらも継承に関係する組み込み関数です。違いは、調べる対象です。isinstance()はインスタンスの型を調べ、issubclass()はクラスどうしの継承関係を調べます。第1引数が値ならisinstance、クラスならissubclassと覚えると、読み分けに迷いません。
Python公式チュートリアル9.5は、この2つを継承に関係する2つの組み込み関数として紹介しています。isinstance(obj, int)は、obj.__class__がintまたはintの派生クラスの場合に限りTrueになります。issubclass(bool, int)はTrue、issubclass(float, int)はFalseです。
Python3エンジニア認定基礎試験は、公式チュートリアルの内容を章ごとの出題率で出題する形で、第9章のクラスと継承も範囲です。この記事では、チュートリアルの例を使って、2つの関数の入力と結果を確認します。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
結論
isinstance(obj, cls)
インスタンスの型を調べる。obj.__class__がclsまたはclsの派生クラスの場合に限りTrueになる。
issubclass(sub, cls)
クラスの継承関係を調べる。第1引数にはインスタンスではなくクラスを渡す。
違いを表で確認
| 比較軸 | isinstance(obj, cls) | issubclass(sub, cls) |
|---|---|---|
| 第1引数に渡すもの | インスタンス(値) | クラス |
| 調べること | インスタンスの型 | クラスの継承関係 |
| チュートリアルの例 | isinstance(obj, int)は、obj.__class__がintやintの派生クラスの場合に限りTrue | issubclass(bool, int)はTrue、issubclass(float, int)はFalse |
| 派生クラスの扱い | 派生クラスのインスタンスも、基底クラスに対してTrueになる | boolはintのサブクラスなので、issubclass(bool, int)はTrueになる |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
issubclass(float, int)がFalseになる理由が分からない人
floatはintのサブクラスではないためです。チュートリアルも、この例でFalseになると説明しています。
isinstanceとissubclassのどちらを書けばよいか迷う人
手元にあるのが値(インスタンス)ならisinstance、クラスそのものならissubclassです。
boolとintの関係が分からない人
チュートリアルは、boolはintのサブクラスだと説明しています。そのため、issubclass(bool, int)はTrueです。
具体例で使い分ける
例 1
チュートリアル9.5の int・bool・float の例
公式チュートリアル9.5の記述をもとに、intとboolとfloatの関係を読みます。boolはintのサブクラスで、floatはintのサブクラスではありません。
- issubclass(bool, int)は、クラスどうしの関係を調べます。boolはintのサブクラスなので、Trueです。
- issubclass(float, int)も、クラスどうしの関係です。floatはintのサブクラスではないので、Falseです。
- isinstance(obj, int)は、objがインスタンスです。obj.__class__がintやintの派生クラスの場合に限りTrueです。boolはintの派生クラスなので、boolのインスタンスもTrueになります。
結論: 引数にクラスを渡す関数と、値を渡す関数を取り違えないことが、読み分けの要点です。
問題文から答えを選ぶ手順
- 1
第1引数が値かクラスかを見る
3や True のような値ならインスタンス、int や bool のような名前ならクラスです。
- 2
関数名から調べる内容を決める
isinstanceはインスタンスの型、issubclassはクラスの継承関係を調べます。
- 3
継承の向きを確かめる
派生クラスは基底クラスに対してTrueになり、無関係なクラスや、逆向きの関係ではFalseです。
試験での見分け方
- 1isinstance(obj, cls)は、インスタンスの型を調べる。
- 2issubclass(sub, cls)は、クラスの継承関係を調べる。
- 3boolはintのサブクラスなのでissubclass(bool, int)はTrue、floatはintのサブクラスではないのでissubclass(float, int)はFalse。
誤答しやすい選択肢
issubclassの第1引数に、値を渡す
修正: issubclassはクラスの継承関係を調べる関数です。値の型を調べたいなら、isinstanceを使います。
floatはintより広い数だから、サブクラスだと考える
修正: チュートリアルは、floatはintのサブクラスではないので、issubclass(float, int)はFalseだと説明しています。
isinstance(obj, int)は、objの型がちょうどintの場合だけTrueになると考える
修正: obj.__class__がintの派生クラスの場合もTrueになります。
確認問題
Q1インスタンスの型を調べる組み込み関数は?
答え: isinstance()
チュートリアル9.5は、isinstance()を使うとインスタンスの型が調べられると説明しています。
Q2クラスの継承関係を調べる組み込み関数は?
答え: issubclass()
チュートリアル9.5は、issubclass()を使うとクラスの継承関係が調べられると説明しています。
Q3issubclass(bool, int)とissubclass(float, int)の結果は?
答え: 前者はTrue、後者はFalse
boolはintのサブクラスですが、floatはintのサブクラスではありません。
到達チェック
- isinstanceがインスタンス、issubclassがクラスを調べる関数だと言い分けられる
- issubclass(bool, int)がTrueで、issubclass(float, int)がFalseの理由を説明できる
- isinstance(obj, int)が派生クラスのインスタンスでもTrueになることを説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- デフォルト引数に空リストを書く場合とNoneを書く場合の違い|呼び出しをまたいで値が残るか(Python3基礎)
def f(a, L=[]) と def f(a, L=None) の違いを、デフォルト値が評価される回数で整理します。Python公式チュートリアル4.9.1の例で f(1)・f(2)・f(3) の出力が変わる理由と、確認問題つき。
- イテレータとジェネレータの違い|クラスで書くか、yieldで書くか(Python3基礎)
イテレータとジェネレータの違いを、書き方と自動で作られるものの差で整理します。Python公式チュートリアル9.8〜9.10の記述、__iter__()・__next__()・StopIterationの扱い、ジェネレータ式との関係、確認問題つき。
- printとreturnの違い|画面に出すか、呼び出し元へ値を返すか(Python3基礎)
printとreturnの違いを、画面に表示するか、関数の呼び出し元へ値を返すかで整理します。Python公式チュートリアル4.8のfibとfib2の例、Noneが表示される理由、確認問題つき。
よくある質問
Qisinstance()とは?
インスタンスの型を調べる組み込み関数です。isinstance(obj, int)は、obj.__class__がintやintの派生クラスの場合に限りTrueになります。
Qissubclass()とは?
クラスの継承関係を調べる組み込み関数です。issubclass(bool, int)はTrue、issubclass(float, int)はFalseです。
Qisinstanceとissubclassの違いは?
調べる対象です。isinstanceはインスタンスの型、issubclassはクラスの継承関係を調べます。
QPython3基礎試験の範囲?
公式の出題範囲は公式チュートリアルの章単位で、第9章のクラスと、9.5の継承を含みます。出題の形式は受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
