Explorando os objetos Python
Neste tutorial, vamos nos aprofundar no conceito de introspecção na programação com Python.
Por que recorrer à introspecção? A introspecção no Python nos permite investigar os detalhes internos de um objeto, possibilitando a análise ou modificação de seu estado, atributos e tipo. De forma simples, é a chave para compreender a essência de um objeto e descobrir as funcionalidades que ele reserva.
O Python nos oferece uma ampla seleção de ferramentas integradas para a realização da introspecção. Vamos conhecer algumas delas:
- type()
Esta ferramenta desvenda o tipo do objeto em questão. Por exemplo, ela permite identificar se o objeto é uma lista, um dicionário, um inteiro, uma string, entre outros.
Exemplo. Criação de uma lista>>> var = [1,2,3,4]
A seguir, a verificação do tipo da variável var por meio da função type()>>> type(var)
A função type informa o tipo de dado, que, neste caso, é uma lista.<class 'list'>
- dir()
Essa ferramenta apresenta um catálogo de atributos e métodos relacionados ao objeto, permitindo uma visão geral das diferentes funções que o objeto pode executar.
Exemplo. Criação de uma lista>>> var = [1,2,3,4]
Então, a exibição da lista de propriedades e métodos acessíveis de um objeto do tipo "lista" através da função dir()>>> dir(var)
A função dir() mostra a lista de propriedades e métodos disponíveis:
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', ... etc.
- id()
Esta ferramenta fornece o identificador único do objeto no ambiente Python, essencial quando precisamos verificar se duas referências apontam para o mesmo objeto.
Exemplo. Criação de uma tupla.
>>> var = (1,2,3,4)
Em seguida, a obtenção do identificador do objeto pela função id()
>>> id(var)
A função id() retorna a referência do objeto na memória do computador.
140492943321280
- getattr(), setattr(), e delattr()
Estas ferramentas são utilizadas para acessar, modificar ou remover atributos de um objeto, respectivamente. - hasattr()
Esta ferramenta verifica a existência de um determinado atributo no objeto, retornando um valor booleano – Verdadeiro caso o atributo esteja presente, Falso caso contrário.
Exemplo. Criação de uma tupla.>>> var = (1,2,3,4)
A verificação da existência do atributo 'real' com a função hasattr().
hasattr(var,'real')
A função retorna Falso, pois as tuplas não possuem o atributo 'real'.False
- in()
Utilizada para determinar se uma palavra-chave ou valor específico encontra-se dentro de um objeto.
Exemplo. Definição de uma string na variável var
>>> var = "Python"
A checagem da presença da substring "th" na string por meio da função in().
>>> "th" in var
A função retorna Verdadeiro, indicando que a substring "th" está presente na string "Python".
True
- is()
Verifica se dois objetos têm a mesma referência de memória, ou seja, se são o mesmo objeto no ambiente de execução.
Exemplo. Criação de duas listas nas variáveis "list1" e "list2"
>>> list1 = [1,2,3]
A verificação da identidade de memória entre os dois objetos com o operador "is".
>>> list2 = [1,2,3]
>>> list1 is list2
A função retorna Falso, pois, apesar de idênticas, as duas listas estão armazenadas em endereços de memória diferentes.
False
- isinstance()
Útil para confirmar se um objeto é instância de uma classe específica ou de um de seus subtipos. - issubclass()
Verifica se uma classe é subclasse de outra.
Dispor dessas ferramentas de introspecção pode fazer uma grande diferença ao explorar as profundezas do código Python.