How do I get the string with name of a class?

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

In [2]: test.__name__
Out[2]: 'test'

It's not a method, it's a field. The field is called __name__. class.__name__ will give the name of the class as a string. object.__class__.__name__ will give the name of the class of an object.


I agree with Mr.Shark, but if you have an instance of a class, you'll need to use its __class__ member:

>>> 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>

From Python 3.3 and onwards we can use __qualname__ field for both classes & functions.

It differs from __name__ field for nested objects like class defined in other class

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

which may be quite useful.

Further reading

  • PEP 3155 -- Qualified name for classes and functions.