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):]