Comment obtenir le nom de classe dun objet sous forme de chaîne en Python


Meilleure réponse

Vous pouvez obtenir le nom en accédant au \_\_name\_\_ attribut de la classe; et si vous avez un objet, vous pouvez obtenir la classe en accédant à lattribut \_\_class\_\_ de lobjet.

>>> class SillyClassName:

... @classmethod

... def my\_name(cls\_):

... return cls\_.\_\_name\_\_

...

... def class\_name(self):

... return self.\_\_class\_\_.\_\_name\_\_

...

>>> SillyClassName.my\_name()

SillyClassName

>>>

>>> inst = SillyClassName()

>>> inst.class\_name()

SillyClassName

Attention – si vous utilisez ceci pour accéder au nom de la classe dans une situation où vous utilisez lhéritage – alors utiliser self.\_\_class\_\_.\_\_name\_\_\_ renverra le nom de la classe dorigine, pas le classe qui contient le code.

>>> class SecondSillyClass(SillyClassName):

... pass

...

>>> inst = SecondSillyClass()

>>> SecondSillyClass.my\_name()

SecondSillyClass

>>> inst.class\_name()

SecondSillyClass

Répondre

de trois façons :

  • Utilisez lopérateur in: "orld" in "Hello World" par exemple
  • Utilisez find() méthode: "Hello World".find("or") – cela renvoie lindex de la sous-chaîne dans la chaîne principale – renvoie -1 lorsque la sous-chaîne nest pas dans la chaîne principale.
  • Utilisez la count() méthode "Hello World".count("or") – cela renvoie la fréquence de la sous-chaîne est contenu dans la chaîne principale – renvoie 0 si la sous-chaîne nest pas dans la chaîne principale.

Utilisation de find () ou count () juste pour tester si une sous-chaîne est contenue dans une chaîne principale nest pas une bonne pratique, mais cela peut être fait si vous prévoyez dutiliser les informations quils fournissent pour dautres raisons.

Par exemple, faites ceci:

if substring in mainstring:

index = mainstring.find(substring)

after = maintstring[index+len(substring):]

Est en fait médiocre pratique – il serait préférable de faire ceci:

index = mainstring.find(substring)

if index != -1:

after = maintstring[index+len(substring):]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *