Orientação a Objetos, CTypes e Introspecção no Dia a Dia —
Você está aqui: Página Inicial / Programação / Grade do evento / Python core / Orientação a Objetos, CTypes e Introspecção no Dia a Dia
Orientação a Objetos, CTypes e Introspecção no Dia a Dia
Raio X da implementação dos bindings de Python para a biblioteca gráfica "Leptonica", pelo autor e manentenedor.
Esses bindings são implementados 100% em Python usando ctypes - e neles, todas os objetos de alto-nível, implementadndo as estruturas de dados da biblioteca em C, e wrappers das funções são gerados automaticamente a partir da leitura dos arquivos .H e .C da biblioteca.
A Leptônica é uma biblioteca ráida e simples escrita em C puro que implementa vários algoritmos de processamento e análise de imagens. Ctypes é o módulo da biblioteca padrão de Python que permite o interfaceamento direto de Python com bibliotecas escritas em C ou outras linguagens compiladas. Seu uso direto é possível, mas exige cuidado e um estudo minucioso de cada chamada feita e parametros usados - com preocupação constante em problemas de baixo nível, como alocação e liberação de memória, sob pena de causar uma segmentation fault no interpretador Python.
A apresentação mostra estratégias criadas com meta-programação em torno da funcionalidade da Ctypes de forma que os tipos gerados automaticamente se comportem como classes de alto-nível em Python - inclusive com a criação de construtores e destrutores automáticos para os objetos. Para tanto, se faz uso ostensivo de metaprogramação, construção dinâmica de classes, manipulação de name-spaces dos módulos e até de Weakrefs (referências fracas)