web-dev-qa-db-fra.com

Comment obtenir la chaîne avec le nom d'une classe?

Quelle méthode dois-je appeler pour obtenir le nom d'une classe?

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

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

Ce n'est pas une méthode, c'est un champ. Le champ est appelé __name__. class.__name__ donnera le nom de la classe sous forme de chaîne. object.__class__.__name__ donnera le nom de la classe d'un objet.

37
clahey

Je suis d'accord avec Mr.Shark, mais si vous avez une instance d'une classe, vous devrez utiliser son __class__ membre:

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

À partir de Python 3.3 et au-delà, nous pouvons utiliser __qualname__ field pour les classes et les fonctions.

Il diffère de __name__ field pour les objets imbriqués comme la classe définie dans une autre classe

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

ce qui peut être très utile.

Lectures complémentaires

0
Azat Ibrakov