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

Ana Maria Gomes
3 minutos de leitura

Conteúdos do tutorial

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.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: