【本日のミッション】
Day28では「組み込み関数(any, all)」を学びました。
今日は少し視点を変えて、
このデータは「何者なのか?」
このクラスは「どのクラスの仲間なのか?」
を調べるための関数、
-
isinstance() -
issubclass()
を学びます。
目次
型(クラス)
Python では、
-
数値 →
int -
文字列 →
str -
リスト →
list
のように、すべてのデータは「型(クラス)」を持っています。
その「所属」を調べるのが、今回の2つの関数です。
isinstance の基本
出力結果
True False
isinstance() は、「この値は、この型(クラス)から作られたもの?」を判定します。
-
x = 10は整数なのでint -
文字列ではないので
strではない
その結果、
-
int→ True -
str→ False
になります。
書き方
isinstance(値, クラス)
issubclass の基本
次は クラス同士の関係 を調べる関数です。
クラスを定義してみよう
ここでは、
-
Animal:親クラス(基本) -
Dog:子クラス(Animal を継承)
という関係になっています。
issubclass を使ってみる
出力結果
True False
issubclass() は、「クラスAは、クラスBを元にして作られているか?」を調べます。
-
Dog は Animal を継承している → True
-
Animal は Dog を継承していない → False
書き方
issubclass(クラスA, クラスB)
練習問題
次のコードを実行するとどうなるでしょうか?
選択肢
A)
True True True False
B)
True False True True
C)
False True False True
D)
エラーになる

解答
A)
True True True False
解説
クラス関係を図で考えよう
-
A:親クラス
-
B:子クラス(Aを継承)
-
obj:Bクラスから作られたオブジェクト
print(isinstance(obj, A))
-
obj は Bクラスのインスタンス
-
B は A を継承している
親クラス A のインスタンスとしても扱われる
print(isinstance(obj, B))
obj は B から作られている
print(issubclass(B, A))
B は A を継承している
print(issubclass(A, B))
A は B を継承していない
False
👉 正解は
A)
True True True False
✅ポイント
-
isinstance(obj, クラス)→ オブジェクトがそのクラスのインスタンスかを判定 -
issubclass(クラス1, クラス2)→ クラス1がクラス2を継承しているかを判定 -
継承関係がある場合、親クラスも「インスタンスとして認識」される
次回予告
Day30では 組み込み関数(callable, eval) を学びます。
関数やオブジェクトを動的に呼び出す便利な仕組みを紹介します!
参考
Python 3 エンジニア認定基礎試験 – Odyssey CBT
Python3 エンジニア認定基礎試験 出題範囲と学習プラン
Python3 エンジニア認定基礎試験 練習問題 Day1:変数の基本
Python3 エンジニア認定基礎試験 練習問題 Day2:変数の型(int型とstr型)
Python3 エンジニア認定基礎試験 練習問題 Day3:算術演算子と代入演算子
Python3 エンジニア認定基礎試験 練習問題 Day4:文字列の操作
Python3 エンジニア認定基礎試験 練習問題 Day5:比較演算子と論理演算子
Python3 エンジニア認定基礎試験 練習問題 Day6:if文(条件分岐)
Python3 エンジニア認定基礎試験 練習問題 Day7:ループ処理(for文・while文)
Python3 エンジニア認定基礎試験 練習問題 Day8:break文とcontinue文
Python3 エンジニア認定基礎試験 練習問題 Day9:リスト(list)の基本
Python3 エンジニア認定基礎試験 練習問題 Day10:リストの操作(append,remove,len など)
Python3 エンジニア認定基礎試験 練習問題 Day11:リストのスライス(部分取り出し)
Python3 エンジニア認定基礎試験 練習問題 Day12:タプル(tuple)の基本
Python3 エンジニア認定基礎試験 練習問題 Day13:辞書(dict)の基本
Python3 エンジニア認定基礎試験 練習問題 Day14:集合(set)の基本
Python3 エンジニア認定基礎試験 練習問題 Day15:関数の定義と呼び出し
Python3 エンジニア認定基礎試験 練習問題 Day16:関数のデフォルト引数とキーワード引数
Python3 エンジニア認定基礎試験 練習問題 Day17:可変長引数(*args, **kwargs)
Python3 エンジニア認定基礎試験 練習問題 Day18:関数のスコープ(ローカル変数とグローバル変数)
Python3 エンジニア認定基礎試験 練習問題 Day19:ネスト関数(関数の中の関数)
Python3 エンジニア認定基礎試験 練習問題 Day20:ラムダ式(無名関数)
Python3 エンジニア認定基礎試験 練習問題 Day21:組み込み関数(len, type, range など)
Python3 エンジニア認定基礎試験 練習問題 Day22:組み込み関数(sum,max,min,sorted)
Python3 エンジニア認定基礎試験 練習問題 Day23:文字列と組み込み関数(len,str,int,float)
Python3 エンジニア認定基礎試験 練習問題 Day24:組み込み関数(abs, round, pow)
Python3 エンジニア認定基礎試験 練習問題 Day25:組み込み関数(sorted の応用と key 引数)
Python3 エンジニア認定基礎試験 練習問題 Day26:組み込み関数(enumerate, zip)
Python3 エンジニア認定基礎試験 練習問題 Day27:組み込み関数(map, filter, reduce)
Python3 エンジニア認定基礎試験 練習問題 Day28:組み込み関数(any, all)
Python3 エンジニア認定基礎試験 練習問題 Day29:組み込み関数(isinstance,issubclass)
Python3 エンジニア認定基礎試験 練習問題 Day30:組み込み関数(callable, eval)
Python3 エンジニア認定基礎試験 練習問題 Day31:組み込み関数(dir, help)
Python3 エンジニア認定基礎試験 練習問題 Day32:組み込み関数(id, hash)
Python3 エンジニア認定基礎試験 練習問題 Day33:組み込み関数(repr, format)
Python3 エンジニア認定基礎試験 練習問題 Day34:組み込み関数(globals, locals)
Python3 エンジニア認定基礎試験 練習問題 Day35:組み込み関数(vars, callable)
Python3 エンジニア認定基礎試験 練習問題 Day36:組み込み関数(reversed, slice)
Python3 エンジニア認定基礎試験 練習問題 Day37:組み込み関数(getattr, setattr, hasattr, delattr)
Python3 エンジニア認定基礎試験 練習問題 Day38:組み込み関数(eval, exec, compile)
Python3 エンジニア認定基礎試験 練習問題 Day39:組み込み関数(zip の応用・辞書との組み合わせ)
Python3 エンジニア認定基礎試験 練習問題 Day40:モジュールの基本(import と from の違い)
Python3 エンジニア認定基礎試験 練習問題 Day41:as(別名インポート)と import の仕組み
Python3 エンジニア認定基礎試験 練習問題 Day42:標準ライブラリ(math モジュールの基本)
Python3 エンジニア認定基礎試験 練習問題 Day43:標準ライブラリ(random モジュールの活用)
Python3 エンジニア認定基礎試験 練習問題 Day44:標準ライブラリ(datetime モジュールの使い方)
Python3 エンジニア認定基礎試験 練習問題 Day45:標準ライブラリ(os と sys)