Como obter o nome da classe de um objeto como uma string em Python


Melhor resposta

Você pode obter o nome acessando \_\_name\_\_ atributo da classe; e se você tiver um objeto, poderá obter a classe acessando o atributo \_\_class\_\_ do objeto.

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

Cuidado – se você usar isso para acessar o nome da classe em uma situação onde você está usando herança – então, usar self.\_\_class\_\_.\_\_name\_\_\_ retornará o nome da classe original, não o classe que contém o código.

>>> class SecondSillyClass(SillyClassName):

... pass

...

>>> inst = SecondSillyClass()

>>> SecondSillyClass.my\_name()

SecondSillyClass

>>> inst.class\_name()

SecondSillyClass

Resposta

três maneiras :

  • Use o operador in: "orld" in "Hello World" por exemplo
  • Use o find() método: "Hello World".find("or") – retorna o índice da string secundária na string principal – retorna -1 quando a string secundária não está na string principal.
  • Use o count() método "Hello World".count("or") – retorna a freqüência com que a sub string está contido na string principal – retorna 0 se a substring não está na string principal.

Usando find () ou count () apenas para testar se uma substring está contida em uma string principal não é uma boa prática, mas pode ser feito se você estiver planejando usar as informações fornecidas por outros motivos.

Então, por exemplo – fazer isto:

if substring in mainstring:

index = mainstring.find(substring)

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

É realmente ruim prática – seria melhor fazer isso:

index = mainstring.find(substring)

if index != -1:

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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *