【初心者向け】Pythonのisinstance()関数の仕組みと使い方をわかりやすく解説
複数の親クラスからクラスを継承する(多重継承)
Pythonでは、以下のように1つのクラスを複数の親クラスから派生させる「多重継承」が可能です。
class A: # クラスAの定義 ... class B: # クラスBの定義 ... class C(A, B): # AとBの両方を継承するサブクラス ...
上記の例では、クラスCはクラスAとクラスBの両方の性質を受け継いだサブクラスになります。このような継承関係が複雑になると、「あるオブジェクトがどのクラスに属しているのか」を確認したくなる場面が出てきます。
isinstance()関数でクラスとインスタンスの関係を確認する
そこで役立つのが isinstance() 関数です。この関数を使うことで、オブジェクトとクラスの関係を簡単にチェックできます。
isinstance(obj, Class)
isinstance() は真偽値(ブール値)を返す関数で、以下の条件を満たす場合に True を返します。
- obj が Class のインスタンスである場合
- obj が Class のサブクラスのインスタンスである場合
どちらにも該当しない場合は False を返します。
具体的な使用例
先ほどの多重継承の例を使って、実際の動作を確認してみましょう。
obj = C() print(isinstance(obj, C)) # True (Cそのもののインスタンス) print(isinstance(obj, A)) # True (AのサブクラスCのインスタンス) print(isinstance(obj, B)) # True (BのサブクラスCのインスタンス) print(isinstance(obj, int)) # False (無関係なクラス)
このように、isinstance() は継承関係も考慮して判定してくれるため、型チェックや条件分岐の処理において非常に便利な関数です。特に、引数として受け取ったオブジェクトが期待する型であるかを検証したい場合などに広く活用されています。
-
Pythonでmkdir -pと同じようにディレクトリを再帰的に作成する方法
mkdir -pとは?UnixやLinuxのコマンドであるmkdir -pは、親ディレクトリが存在しない場合でも、必要な階層のディレクトリをまとめて一括作成できる便利なオプションです。また、指定したディレクトリがすでに存在していてもエラーにならず、そのまま処理が続行されます。Pythonでmkdir -pと同等の処理を行うにはPythonで同じことを実現するには、標準ライブラリのosモジュールにあるos.makedirs()関数を使用します。この関数に作成したいパスを渡すことで、中間の親ディレクトリも含めて再帰的にディレクトリを作成できます。exists_ok=True を指定するデフォルトで
-
Pythonモジュールにおける変数スコープの仕組みを徹底解説
名前空間とは何か Pythonにおいて、スコープは「名前空間(namespace)」という仕組みによって実現されています。パッケージ、モジュール、クラス、関数、メソッドはそれぞれ独自の名前空間を持ち、その中で変数名が解決されます。 関数やモジュール、パッケージが評価(実行)され始めると、新しい名前空間が作成されます。これは「評価コンテキスト」と考えると理解しやすいでしょう。そして実行が終了すると、その名前空間は破棄され、そこに含まれていた変数も同時に消滅します。 さらに、ローカルの名前空間に目的の名前が見つからない場合に参照される「グローバル名前空間」も存在します。 変数はどこに作成されるの