Slik får du klassenavnet til et objekt som en streng i Python


Beste svaret

Du kan få navnet ved å gå til \_\_name\_\_ attributt til klassen; og hvis du har et objekt, kan du få klassen ved å gå til \_\_class\_\_ -attributtet til objektet.

>>> 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

Vær oppmerksom – hvis du bruker dette for å få tilgang til klassenavnet i en situasjon der du bruker arv – vil bruk av self.\_\_class\_\_.\_\_name\_\_\_ returnere navnet på den opprinnelige klassen, ikke klasse som inneholder koden.

>>> class SecondSillyClass(SillyClassName):

... pass

...

>>> inst = SecondSillyClass()

>>> SecondSillyClass.my\_name()

SecondSillyClass

>>> inst.class\_name()

SecondSillyClass

Svar

på tre måter :

  • Bruk operatoren in: "orld" in "Hello World" for eksempel
  • Bruk find() metode: "Hello World".find("or") – dette returnerer indeksen til understrengen i hovedstrengen – returnerer -1 når understrengen er ikke i hovedstrengen.
  • Bruk count() -metoden "Hello World".count("or") – dette returnerer hvor ofte understrengen er inneholdt i hovedstrengen – returnerer 0 hvis understrengen ikke er i hovedstrengen.

Bruk enten find () eller count () bare for å teste om en understreng er inneholdt i en hovedstreng er ikke god praksis, men det kan gjøres hvis du planlegger å bruke informasjonen de gir av andre grunner.

Så for eksempel – gjør dette:

if substring in mainstring:

index = mainstring.find(substring)

after = maintstring[index+len(substring):]

Er faktisk dårlig praksis – det ville være bedre å gjøre dette:

index = mainstring.find(substring)

if index != -1:

after = maintstring[index+len(substring):]

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *