Cum se obține numele clasei unui obiect ca șir în Python


Cel mai bun răspuns

Puteți obține numele accesând \_\_name\_\_ atributul clasei; și dacă aveți un obiect, puteți obține clasa accesând atributul \_\_class\_\_ al obiectului.

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

Ferește-te – dacă folosești acest lucru pentru a accesa numele clasei într-o situație în care folosești moștenire – atunci folosind self.\_\_class\_\_.\_\_name\_\_\_ vei returna numele clasei inițiale, nu clasă care conține codul.

>>> class SecondSillyClass(SillyClassName):

... pass

...

>>> inst = SecondSillyClass()

>>> SecondSillyClass.my\_name()

SecondSillyClass

>>> inst.class\_name()

SecondSillyClass

Răspunde

în trei moduri :

  • Utilizați operatorul „în”: "orld" in "Hello World" de exemplu
  • Utilizați find() metodă: "Hello World".find("or") – aceasta returnează indexul sub-șirului din șirul principal – returnează -1 când sub-șirul nu se află în șirul principal.
  • Utilizați metoda count() "Hello World".count("or") – aceasta returnează frecvența sub șirului este conținut în șirul principal – returnează 0 dacă șirul secundar nu se află în șirul principal.

Folosind fie find (), fie count () doar pentru a testa dacă un sub șir este conținut într-un șir principal nu este o bună practică, dar se poate face dacă intenționați să utilizați informațiile pe care le furnizează din alte motive.

Deci, de exemplu – faceți acest lucru:

if substring in mainstring:

index = mainstring.find(substring)

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

Este de fapt sărac practică – ar fi mai bine să faceți acest lucru:

index = mainstring.find(substring)

if index != -1:

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *