Jak uzyskać nazwę klasy obiektu jako ciąg znaków w Pythonie


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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *