Hogyan lehet lekérni egy objektum osztálynevét karakterláncként a Pythonban


Legjobb válasz

A nevet a \_\_name\_\_ az osztály attribútuma; ha pedig van objektuma, akkor az osztályt az objektum \_\_class\_\_ attribútumának elérésével szerezheti be.

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

Vigyázat – ha ezt használja az osztály nevének eléréséhez olyan helyzetben, amikor öröklést használ, akkor az self.\_\_class\_\_.\_\_name\_\_\_ használatával az eredeti osztály neve kerül vissza, nem pedig osztály, amely tartalmazza a kódot.

>>> class SecondSillyClass(SillyClassName):

... pass

...

>>> inst = SecondSillyClass()

>>> SecondSillyClass.my\_name()

SecondSillyClass

>>> inst.class\_name()

SecondSillyClass

Válasz

háromféleképpen :

  • Használja például az in operátort: ​​"orld" in "Hello World".
  • Használja a find() metódus: "Hello World".find("or") – ez visszaadja a részlánc indexét a fő karakterláncban – visszaadja az -1 parancsot, amikor az alhúr nincs a fő karakterláncban.
  • Használja a count() metódust "Hello World".count("or") – ez adja vissza az al karakterlánc gyakoriságát a fő karakterláncban található – 0-t ad vissza, ha az al-karakterlánc nincs a fő karakterláncban.

A find () vagy a count () használatával csak annak tesztelésére használható, hogy tartalmaz-e egy alsztringet egy fő karakterláncban nem jó gyakorlat, de megtehető, ha más okokból tervezi felhasználni az általuk nyújtott információkat.

Például – tegye ezt:

if substring in mainstring:

index = mainstring.find(substring)

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

Valójában gyenge gyakorlat – jobb lenne ezt megtenni:

index = mainstring.find(substring)

if index != -1:

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

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük