Kuinka saada objektin luokan nimi merkkijonoksi Pythonissa


Paras vastaus

Voit saada nimen avaamalla \_\_name\_\_ luokan attribuutti; ja jos sinulla on objekti, voit saada luokan avaamalla objektin \_\_class\_\_ -määritteen.

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

Varo – jos käytät tätä luokan luokkaan pääsemiseen tilanteessa, jossa käytät perintöä, niin self.\_\_class\_\_.\_\_name\_\_\_ -toiminnon palauttaminen palauttaa alkuperäisen luokan nimen, ei luokka, joka sisältää koodin.

>>> class SecondSillyClass(SillyClassName):

... pass

...

>>> inst = SecondSillyClass()

>>> SecondSillyClass.my\_name()

SecondSillyClass

>>> inst.class\_name()

SecondSillyClass

Vastaa

kolmella tavalla :

  • Käytä in -operaattoria: "orld" in "Hello World" esimerkiksi
  • Käytä find() method: "Hello World".find("or") – tämä palauttaa päämerkkijonon alimerkkijonon indeksin – palauttaa -1, kun alimerkkijono ei ole päämerkkijonossa.
  • Käytä count() -menetelmää "Hello World".count("or") – tämä palauttaa alimerkkijonon sisältyy päämerkkijonoon – palauttaa 0, jos alimerkkijono ei ole päämerkkijonossa.

Käytä joko find () – tai count () -ominaisuutta vain testataksesi, onko alimerkkijono päämerkkijonossa ei ole hyvä käytäntö, mutta se voidaan tehdä, jos aiot käyttää heidän toimittamiaan tietoja muista syistä.

Joten esimerkiksi – näin:

if substring in mainstring:

index = mainstring.find(substring)

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

On todella huono käytäntö – olisi parempi tehdä tämä:

index = mainstring.find(substring)

if index != -1:

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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *