Jak získat název třídy objektu jako řetězec v Pythonu


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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *