10.4.3isinstance関数

isinstance関数

Pythonの組み込み関数の一つであるisinstance()は、特定のオブジェクトが特定のクラスまたは型のインスタンスであるかどうかをチェックするために使用されます。これは、オブジェクトの型が予想される型かどうかを判定するためによく使われる関数です。

isinstance()関数は2つの引数を取ります:

  1. チェックしたいオブジェクト
  2. オブジェクトが属していることを確認したい型またはクラス(タプルで複数の型またはクラスを指定することも可能)

関数はオブジェクトが指定された型またはクラスのインスタンスである場合にTrueを、そうでない場合にFalseを返します。

構文 isinstance(obj, clazz)
obj :チェックするインスタンス
clazz :任意のクラス

>>> from abc import abstractmethod, ABC
>>>
>>> class Figure(ABC):
...     def __init__(self, width, height):
...       self.width = width
...       self.height = height
... class Triangle(Figure):
  File "<stdin>", line 5
    class Triangle(Figure):
    ^^^^^
SyntaxError: invalid syntax
>>>       def get_area(self):
  File "<stdin>", line 1
    def get_area(self):
IndentationError: unexpected indent
>>>           return self.width * self.height / 2
  File "<stdin>", line 1
    return self.width * self.height / 2
IndentationError: unexpected indent
>>> class Rectangle(Figure):
...    #四角形の面積を求めるためのget_areaメソッドを定義
...    def get_area(self):
...       return self.width * self.height
...
>>> if __name__ == '__main__':
...    #Figure派生クラスのリストを準備
...    figs = [
...       Triangle(10, 15),
...       Rectangle(10, 15),
...       Triangle(5, 1)
...    ]
... #配列figsの内容を順番に処理
...    for fig in figs:
...       if isinstance(fig, Figure):
...          print(f'{fig.__class__}:{fig.get_area()}')
...
<class '__main__.Rectangle'>:150
>>>

中略なので ほぼ再現できていません。 ただ何となく答えを一つ出たっぽくはできました。