Najlepsza odpowiedź
Nazwę można uzyskać, uzyskując dostęp do \_\_name\_\_
atrybut klasy; a jeśli masz obiekt, możesz pobrać klasę, uzyskując dostęp do atrybutu \_\_class\_\_
obiektu.
>>> 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
Uwaga – jeśli używasz tego do uzyskania dostępu do nazwy klasy w sytuacji, gdy używasz dziedziczenia – wtedy użycie self.\_\_class\_\_.\_\_name\_\_\_
zwróci nazwę oryginalnej klasy, a nie klasa zawierająca kod.
>>> class SecondSillyClass(SillyClassName):
... pass
...
>>> inst = SecondSillyClass()
>>> SecondSillyClass.my\_name()
SecondSillyClass
>>> inst.class\_name()
SecondSillyClass
Odpowiedz
trzy sposoby :
- Użyj operatora „in”:
"orld" in "Hello World"
na przykład - Użyj
find()
metoda:"Hello World".find("or")
– zwraca indeks podłańcucha w głównym ciągu – zwraca-1
, gdy podłańcuch nie ma w głównym ciągu. - Użyj metody
count()
"Hello World".count("or")
– zwraca to, jak często podciąg jest zawarty w głównym ciągu – zwraca 0, jeśli podłańcuch nie znajduje się w głównym ciągu.
Użycie funkcji find () lub count () tylko do sprawdzenia, czy podłańcuch jest zawarty w głównym ciągu nie jest dobrą praktyką, ale można to zrobić, jeśli planujesz wykorzystać informacje, które podają z innych powodów.
Na przykład:
if substring in mainstring:
index = mainstring.find(substring)
after = maintstring[index+len(substring):]
W rzeczywistości jest kiepski ćwiczenie – lepiej byłoby to zrobić:
index = mainstring.find(substring)
if index != -1:
after = maintstring[index+len(substring):]