![](https://hub.asimov.academy/wp-content/uploads/2024/06/ThumbCursoAudioVideoComHuggingFace-14.webp)
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
TestarNeste 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.
![](https://hub.asimov.academy/wp-content/uploads/2024/06/maxresdefault-6.jpg)
Comentários