105 votes

Comment obtenir le nom de classe concret sous forme de chaîne?

Je veux éviter d’appeler beaucoup de fonctions isinstance() , alors je cherche un moyen d’obtenir le nom de classe concret d’une variable d’instance sous forme de chaîne.

Des idées?

184voto

SilentGhost Points 79627
  instance.__class__.__name__
 

Exemple:

 >>> class A():
    pass
>>> a = A()
>>> a.__class__.__name__
'A'
 

13voto

Morendil Points 3112
<object>.__class__.__name__

8voto

Javier Points 33134

vous pouvez également créer un dict avec les classes elles-mêmes comme clés, pas nécessairement les noms de classe

 typefunc={
    int:lambda x: x*2,
    str:lambda s:'(*(%s)*)'%s
}

def transform (param):
    print typefunc[type(param)](param)

transform (1)
>>> 2
transform ("hi")
>>> (*(hi)*)
 

Ici, typefunc est un dict qui mappe une fonction pour chaque type. transform obtient cette fonction et l'applique au paramètre.

bien sûr, il serait bien préférable d'utiliser de la «vraie» POO

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X