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
関数を定義しています。この関数は、変数と文字列を引数に取り、文字列がグローバルスコープで定義されたクラスの名前である場合、そのクラスのインスタンスであるかどうかを確認します。
この方法を使用すれば、クラス名の文字列を使用してisinstance
を行うことが可能になります。ただし、注意点として、この方法ではチェック対象のクラスがグローバルスコープで定義されている必要があります。
以上が、Pythonでisinstance
をクラス名の文字列で使用する方法についての説明です。この情報がPythonのコーディングに役立つことを願っています。