Nejlepší odpověď
Název můžete získat přístupem k \_\_name\_\_
atribut třídy; a pokud máte objekt, můžete třídu získat přístupem k atributu \_\_class\_\_
objektu.
>>> 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
Pozor – pokud používáte toto pro přístup k názvu třídy v situaci, kdy používáte dědičnost – pak použití self.\_\_class\_\_.\_\_name\_\_\_
vrátí název původní třídy, nikoli třída, která obsahuje kód.
>>> class SecondSillyClass(SillyClassName):
... pass
...
>>> inst = SecondSillyClass()
>>> SecondSillyClass.my\_name()
SecondSillyClass
>>> inst.class\_name()
SecondSillyClass
Odpovědět
třemi způsoby :
- Použijte operátor „in“:
"orld" in "Hello World"
například - Použijte
find()
metoda:"Hello World".find("or")
– vrátí index podřetězce v hlavním řetězci – vrátí-1
když podřetězec není v hlavním řetězci. - Použijte
count()
metodu"Hello World".count("or")
– vrací to, jak často bude podřetězec je obsažen v hlavním řetězci – vrací 0, pokud podřetězec není v hlavním řetězci.
Pomocí funkce find () nebo count () pouze otestujte, zda je obsažen podřetězec v hlavním řetězci není dobrá praxe, ale lze to udělat, pokud plánujete použít informace, které poskytují, z jiných důvodů.
Takže například – děláte to:
if substring in mainstring:
index = mainstring.find(substring)
after = maintstring[index+len(substring):]
Je ve skutečnosti špatný praxe – bylo by lepší to udělat:
index = mainstring.find(substring)
if index != -1:
after = maintstring[index+len(substring):]