Så här får du klassnamnet på ett objekt som en sträng i Python


Bästa svaret

Du kan få namnet genom att öppna \_\_name\_\_ klassens attribut; och om du har ett objekt kan du få klassen genom att gå till \_\_class\_\_ attributet för 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

Var uppmärksam – om du använder detta för att komma åt klassnamnet i en situation där du använder arv – då kommer self.\_\_class\_\_.\_\_name\_\_\_ att returnera namnet på den ursprungliga klassen, inte klass som innehåller koden.

>>> class SecondSillyClass(SillyClassName):

... pass

...

>>> inst = SecondSillyClass()

>>> SecondSillyClass.my\_name()

SecondSillyClass

>>> inst.class\_name()

SecondSillyClass

Svara

tre sätt :

  • Använd operatören in: "orld" in "Hello World" till exempel
  • Använd find() method: "Hello World".find("or") – detta returnerar index för understrängen i huvudsträngen – returnerar -1 när understrängen finns inte i huvudsträngen.
  • Använd count() -metoden "Hello World".count("or") – detta returnerar hur ofta understrängen finns i huvudsträngen – returnerar 0 om understrängen inte finns i huvudsträngen.

Använd antingen find () eller count () bara för att testa om en substring finns i en huvudsträng är inte bra praxis, men det kan göras om du planerar att använda den information de tillhandahåller av andra skäl.

Så till exempel – gör detta:

if substring in mainstring:

index = mainstring.find(substring)

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

Är faktiskt dålig öva – det skulle vara bättre att göra detta:

index = mainstring.find(substring)

if index != -1:

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

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *