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__
を使って簡単にインスタンスのクラス名を取得できます。クラス名を利用したデバッグやログ出力で非常に役立つ技術です。