Pythonでは、isinstance()
関数を使用してオブジェクトが特定のクラスのインスタンスであるかどうかを確認できます。しかし、クラスの型ではなくクラス名を使用してこれを行いたい場合はどうすればよいでしょうか?
以下に、クラス名を文字列として使用してisinstance()
を呼び出す方法を示します。
class A: pass
class B(A): pass
class C(B): pass
c_inst = C()
def isinstance_string(variable, string):
cls = globals().get(string, None)
if inspect.isclass(cls):
return isinstance(variable, cls)
return False
ok = isinstance_string(c_inst, 'A')
上記のコードでは、isinstance_string()
関数を定義しています。この関数は、変数とクラス名を文字列として受け取り、その変数が指定されたクラスのインスタンスであるかどうかを返します。
ただし、注意点として、この方法ではglobals()
関数を使用しているため、チェックしたいクラスはグローバルスコープで定義されている必要があります。
以上が、Pythonでisinstance()
をクラス名で使用する方法についての説明です。この情報がPythonのコーディングに役立つことを願っています。