Hoe de klassennaam van een object als string in Python te krijgen


Beste antwoord

Je kunt de naam krijgen door naar de \_\_name\_\_ attribuut van de klasse; en als je een object hebt, kun je de klasse krijgen door naar het \_\_class\_\_ -attribuut van het object te gaan.

>>> 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 op – als u dit gebruikt om toegang te krijgen tot de klassenaam in een situatie waarin u overerving gebruikt, zal het gebruik van self.\_\_class\_\_.\_\_name\_\_\_ de naam van de oorspronkelijke klasse teruggeven, niet de klasse die de code bevat.

>>> class SecondSillyClass(SillyClassName):

... pass

...

>>> inst = SecondSillyClass()

>>> SecondSillyClass.my\_name()

SecondSillyClass

>>> inst.class\_name()

SecondSillyClass

Antwoord

drie manieren :

  • Gebruik de in-operator: "orld" in "Hello World" bijvoorbeeld
  • Gebruik de find() methode: "Hello World".find("or") – dit geeft de index van de subtekenreeks in de hoofdreeks terug – geeft -1 terug als de subtekenreeks staat niet in de hoofdreeks.
  • Gebruik de count() methode "Hello World".count("or") – dit geeft terug hoe vaak de subtekenreeks bevindt zich in de hoofdreeks – geeft 0 terug als de subtekenreeks niet in de hoofdreeks staat.

Met behulp van find () of count () alleen om te testen of een substring aanwezig is in een hoofdreeks is geen goede gewoonte, maar het kan worden gedaan als u van plan bent de informatie die ze verstrekken om andere redenen te gebruiken.

Dus bijvoorbeeld – dit doen:

if substring in mainstring:

index = mainstring.find(substring)

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

Is eigenlijk slecht oefenen – het zou beter zijn om dit te doen:

index = mainstring.find(substring)

if index != -1:

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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *