web-dev-qa-db-ja.com

クラスの名前を含む文字列を取得するにはどうすればよいですか?

クラスの名前を取得するには、どのメソッドを呼び出しますか?

44
clahey
In [1]: class test(object):
   ...:     pass
   ...: 

In [2]: test.__name__
Out[2]: 'test'
56
Mr Shark

メソッドではなく、フィールドです。フィールドは__name__と呼ばれます。 class.__name__は、クラスの名前を文字列として提供します。 object.__class__.__name__は、オブジェクトのクラスの名前を示します。

37
clahey

私はMr.Sharkに同意しますが、クラスのインスタンスがある場合は、そのクラスを使用する必要があります__class__メンバー:

>>> class test():
...     pass
...
>>> a_test = test()
>>>
>>> a_test.__name__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: test instance has no attribute '__name__'
>>>
>>> a_test.__class__
<class __main__.test at 0x009EEDE0>
10
Jon Cage

Python 3.3 以降、 __qualname__フィールド は、クラスと関数の両方に使用します。

__name__フィールド 他のクラスで定義されたクラスのようなネストされたオブジェクトの場合

>>> class A:
        class B:
            pass
>>> A.B.__name__
'B'
>>> A.B.__qualname__
'A.B'

これはかなり便利かもしれません。

参考文献

0
Azat Ibrakov