Em computação, introspecção ou introspecção de tipos, é a habilidade de um programa de examinar o tipo ou propriedades de um objeto em tempo de execução. Algumas linguagens de programação possuem esta capacidade.http://nbviewer.ipython.org/github/ricardoduarte/python-para-desenvolvedores/blob/master/Capitulo14/Capitulo14_Introspeccao.ipynb
A introspecção não deve ser confundida com reflexão, que vai um pouco mais adiante e é a habilidade de um programa para manipular os valores, metadados, propriedades e/ou funções de um objeto em tempo de execução. Algumas linguagens de programação, por exemplo Java, também possuem esta capacidade.
Exemplos Python O método mais comum de introspecção em Python é usar a função dir para detalhar os atributos de um objeto. Por exemplo:
class foo(object): def __init__(self, val): self.x = val def bar(self): return self.x
...
>>> dir(foo(5)) ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__', 'bar', 'x']
Da mesma forma, as funções nativas type e isinstance podem ser usadas para determinar o que um objeto é enquanto hasattr pode determinar o que um objeto faz. Por exemplo:
>>> a = foo(10) >>> b = bar(11) >>> type(a) <type 'foo'> >>> isinstance(a, foo) True >>> isinstance(a, type(a)) True >>> isinstance(a, type(b)) False >>> hasattr(a, 'bar') True
Em Python 2, mas não em Python 3, declarar class foo em vez de class foo(object) resultará em type, retornando o tipo de instância (instance) genérico da classe.Unifying types and classes in Python 2.2
Categoria:Programação orientada a objetos