Sådan får du klassens navn på et objekt som en streng i Python


Bedste svar

Du kan få navnet ved at få adgang til \_\_name\_\_ attribut for klassen; og hvis du har et objekt, kan du få klassen ved at få adgang til \_\_class\_\_ -attributten for 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

Pas på – hvis du bruger dette til at få adgang til klassens navn i en situation, hvor du bruger arv – så vil self.\_\_class\_\_.\_\_name\_\_\_ returnere navnet på den oprindelige klasse, ikke klasse, der indeholder koden.

>>> class SecondSillyClass(SillyClassName):

... pass

...

>>> inst = SecondSillyClass()

>>> SecondSillyClass.my\_name()

SecondSillyClass

>>> inst.class\_name()

SecondSillyClass

Svar

tre måder :

  • Brug operatoren in: "orld" in "Hello World" for eksempel
  • Brug find() metode: "Hello World".find("or") – dette returnerer indekset for understrengen i hovedstrengen – returnerer -1 når understrengen findes ikke i hovedstrengen.
  • Brug count() -metoden "Hello World".count("or") – dette returnerer, hvor ofte understrengen er indeholdt i hovedstrengen – returnerer 0, hvis understrengen ikke er i hovedstrengen.

Brug enten find () eller count () bare for at teste, om en substring er indeholdt i en hovedstreng er ikke god praksis, men det kan gøres, hvis du planlægger at bruge de oplysninger, de leverer af andre grunde.

Så for eksempel – gø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 at gøre dette:

index = mainstring.find(substring)

if index != -1:

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *