Come ottenere il nome della classe di un oggetto come stringa in Python


Migliore risposta

Puoi ottenere il nome accedendo a \_\_name\_\_ attributo della classe; e se hai un oggetto, puoi ottenere la classe accedendo allattributo \_\_class\_\_ delloggetto.

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

Attenzione: se lo utilizzi per accedere al nome della classe in una situazione in cui stai utilizzando lereditarietà, luso di self.\_\_class\_\_.\_\_name\_\_\_ restituirà il nome della classe originale, non il classe che contiene il codice.

>>> class SecondSillyClass(SillyClassName):

... pass

...

>>> inst = SecondSillyClass()

>>> SecondSillyClass.my\_name()

SecondSillyClass

>>> inst.class\_name()

SecondSillyClass

Rispondi

tre modi :

  • Utilizza loperatore “in”: "orld" in "Hello World" ad esempio
  • Utilizza find() metodo: "Hello World".find("or") – restituisce lindice della sottostringa nella stringa principale – restituisce -1 quando la sottostringa non è nella stringa principale.
  • Utilizza il count() metodo "Hello World".count("or") – questo restituisce quanto spesso la sottostringa è contenuto nella stringa principale – restituisce 0 se la sottostringa non è nella stringa principale.

Usare find () o count () solo per verificare se una sottostringa è contenuta in una stringa principale non è una buona pratica, ma può essere eseguita se prevedi di utilizzare le informazioni fornite per altri motivi.

Quindi, ad esempio, facendo questo:

if substring in mainstring:

index = mainstring.find(substring)

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

è effettivamente scadente pratica – sarebbe meglio farlo:

index = mainstring.find(substring)

if index != -1:

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *