Pythonでインスタンスのクラス名を取得する方法

Pythonでは、インスタンスのクラス名を取得する方法として、type()__class__を使うのが一般的です。

type()による取得

最もシンプルな方法は、type()関数を使うことです。type()はオブジェクトのクラスを返し、その__name__属性でクラス名を取得できます。

class MyClass:
    pass
instance = MyClass()
print(type(instance).__name__)  # 結果: 'MyClass'

__class__による取得

もう一つの方法として、インスタンスの__class__属性を使ってクラス名を取得する方法があります。

print(instance.__class__.__name__)  # 結果: 'MyClass'

type()__class__の違いはほとんどなく、どちらもほぼ同じように使用できますが、type()の方が推奨されることが多いです。

完全修飾名の取得

クラスがネストされている場合や、モジュール内で複数のクラスが定義されている場合には、クラスの完全修飾名を取得するために__qualname__を使います。

class Outer:
    class Inner:
        pass
instance = Outer.Inner()
print(instance.__class__.__qualname__)  # 結果: 'Outer.Inner'

このように、Pythonではtype()__class__を使って簡単にインスタンスのクラス名を取得できます。クラス名を利用したデバッグやログ出力で非常に役立つ技術です。