it-swarm-pt.tech

Como obtenho a string com o nome de uma classe?

Qual método eu chamo para obter o nome de uma classe?

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

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

Não é um método, é um campo. O campo é chamado __name__. class.__name__ dará o nome da classe como uma string. object.__class__.__name__ dará o nome da classe de um objeto.

37
clahey

Concordo com o Sr. Shark, mas se você tiver uma instância de uma classe, precisará usar sua __class__ membro:

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

A partir de Python 3.3 e em diante podemos usar __qualname__ campo para ambas as classes e funções.

Difere de __name__ field para objetos aninhados como classe definida em outra classe

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

o que pode ser bastante útil.

Leitura adicional

0
Azat Ibrakov