it-swarm-es.tech

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

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

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

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

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.

37
clahey

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

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

Desde Python 3.3 y en adelante podemos usar __qualname__ field para ambas clases y funciones.

Se diferencia de __name__ field para objetos anidados como la clase definida en otra clase

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

lo cual puede ser bastante útil.

Otras lecturas

0
Azat Ibrakov