4
1

More than 3 years have passed since last update.

class名をインスタンスを作らずに取得する

Last updated at Posted at 2020-08-06

概要

クラスオブジェクト自身からclass名を取得する方法が書いてある日本語の記事がなかったので、備忘録として書いておきます。

class名を取得する方法

インスタンスから取得する

ググってもほとんどがこの方法を使って取得していました。

class A:
  pass

a = A()
print(a.__class__.__name__)
>>> A

クラスオブジェクト自身から取得する

Python3.3から実装された__qualname__で取得できます。
追記:B.__name__でも取得できるようです。@shiracamusさん、ありがとうございます。
また、__qualname__はクラスオブジェクト内ではB.__qualname__ではなく単純に__qualname__とだけでも書けます。

class B:
  pass

print(B.__qualname__)
>>> B

# 追記
class C:
  qualname = __qualname__

print(C.__name__)
print(C.qualname)
>>> C
>>> C

おわりに

__qualname__なら、クラスオブジェクト内やクラスオブジェクトを引数に取る関数の中でも取得できますね。
追記:先ほど追記した通り、__name__を使っても取得できるようです。

参考文献

現在のクラスの名前を取得しますか?

4
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1