¿Cómo consigo la cadena con el nombre de una clase?

¿A qué método llamo para obtener el nombre de una clase?

In [1]: class test(object): ...: pass ...: In [2]: test.__name__ Out[2]: 'test' 

No es un método, es un campo. El campo se llama __name__ . class.__name__ dará el nombre de la clase como una cadena. object.__class__.__name__ dará el nombre de la clase de un objeto.

Estoy de acuerdo con Mr.Shark, pero si tiene una instancia de una clase, deberá usar su miembro __class__ :

 >>> class test(): ... pass ... >>> a_test = test() >>> >>> a_test.__name__ Traceback (most recent call last): File "", line 1, in  AttributeError: test instance has no attribute '__name__' >>> >>> a_test.__class__  

En [8]: str('2'.__class__)
Fuera [8]: ""

En [9]: str(len.__class__)
Fuera [9]: ""

En [10]: str(4.6.__class__)
Fuera [10]: ""

O, como se señaló anteriormente,

En [11]: 4.6.__class__.__name__
Fuera [11]: 'float'

Desde Python 3.3 y en adelante, podemos usar el campo __qualname__ para ambas clases y funciones.

Se diferencia del campo __name__ para los objetos nesteds como la clase definida en otra clase

 >>> class A: class B: pass >>> AB__name__ 'B' >>> AB__qualname__ 'AB' 

lo que puede ser bastante útil.

Otras lecturas

  • PEP 3155 – Nombre calificado para clases y funciones .