Tamanho de fonte
Alto contraste
Altura de linha

Como Encontrar o Nome da Classe de uma Instância em Python

Avatar de Ana Maria Gomes Ana Maria Gomes
2 minutos de leitura 6 meses atrás

Ao trabalhar com objetos em Python, você pode precisar encontrar a classe da qual uma instância foi criada. Essa é uma tarefa comum para fins de depuração ou registro de atividades (logging), e o Python oferece uma maneira direta de realizar isso.

Usando o Atributo __class__

Um dos métodos mais simples para obter o nome de uma classe usada para criar uma instância é acessando o atributo __class__ da instância, seguido pelo atributo __name__ da classe. Veja como você pode fazer isso:

instancia = MinhaClasse()
nome_classe = instancia.__class__.__name__
print(nome_classe)  # Saída: MinhaClasse

Este método é conciso e funciona bem tanto no Python 2 quanto no Python 3. No entanto, é importante notar que no Python 2, este método é confiável apenas para classes do novo estilo.

Usando a Função type()

Outra abordagem é usar a função embutida type(), que retorna o tipo de um objeto. O atributo __name__ do objeto tipo retornado fornece o nome da classe:

instancia = MinhaClasse()
nome_classe = type(instancia).__name__
print(nome_classe)  # Saída: MinhaClasse

Este método também é compatível com o Python 3, onde todas as classes são do novo estilo por padrão.

Exemplo Prático

Vamos ver um exemplo prático onde temos uma hierarquia de classes e queremos determinar o nome da classe de uma instância dentro desta hierarquia:

class Animal:
    def identificar(self):
        print(type(self).__name__)

class Cachorro(Animal):
    pass

class Gato(Animal):
    pass

# Criar instâncias de Cachorro e Gato
instancia_cachorro = Cachorro()
instancia_gato = Gato()

# Identificar os nomes das classes
instancia_cachorro.identificar()  # Saída: Cachorro
instancia_gato.identificar()  # Saída: Gato
Testar

Neste exemplo, o método identificar usa type(self).__name__ para imprimir o nome da classe da qual a instância atual (self) foi criada.

Resumo

Para descobrir o nome da classe de uma instância em Python, você pode usar o atributo __class__.__name__ da instância ou a função type() seguida por __name__. Ambos os métodos são eficazes, mas usar type() é a maneira mais Pythonica e garante compatibilidade com o Python 3. Lembre-se, entender a classe de uma instância pode ser crucial para depuração e introspecção em seus programas Python.

Imagem de um notebook

Cursos de programação gratuitos com certificado

Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:

  • Conteúdos gratuitos
  • Projetos práticos
  • Certificados
  • +20 mil alunos e comunidade exclusiva
  • Materiais didáticos e download de código
Inicie agora

Comentários

Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov