Chegou a hora de explorar os Callback Protocols, um recurso poderoso que leva a tipagem estática do Python para outro nível.
Você já conhece o Callable, mas ele tem limites: não consegue expressar nomes de parâmetros, argumentos keyword-only ou assinaturas muito complexas. É aí que entra o Callback Protocol: um contrato tipado via __call__ que te dá precisão absoluta sobre como funções e callbacks devem ser usados.
Nessa aula, vamos começar do simples e evoluir até casos bem avançados:
– Diferença entre Callable e Callback Protocol.
– Como expressar argumentos keyword-only que Callable não consegue.
– Uso de TypeVar para criar callbacks genéricos (com entradas e saídas dinâmicas).
– Erros de tipagem comuns que o Pyright/Mypy pegam (nomes de parâmetros e tipos errados).
– Como usar overloads em Callback Protocols para criar dispachers tipados, capazes de escolher funções diferentes dependendo dos argumentos.
– Exemplo prático de um dispatcher para o datetime, que decide entre strptime, fromtimestamp ou o construtor de datetime baseado no tipo de entrada.
Essa aula é fundamental para você que quer dominar tipagem avançada e entender como callbacks podem ser modelados de forma explícita e segura.
Este vídeo é parte de uma playlist, essa é a DÉCIMA TERCEIRA aula. Segue o link da playlist para acompanhar:
Link do repositório:
https://github.com/luizomf/typehints_python
Meus Cursos: https://www.otaviomiranda.com.br/
Newsletter: https://luizomf.substack.com/
Capítulos:
00:00:00 – Introdução aos callback protocols no Python 3.13
00:01:00 – Os problemas do Callable
00:03:30 – Criando seu primeiro callback protocol
00:09:43 – TypeVar com Callback Protocols no Python
00:18:00 – Callback Protocol com overloads complexos e dispacher
00:40:00 – Concluindo o exemplo mais complexo da sua vida
#Python #TypeHints #Callable #Protocols #Python3



コメント
Meus Cursos: https://www.otaviomiranda.com.br/
Newsletter: https://luizomf.substack.com/
prof da uma olhadinha nos primeiros 5 minutos não da pra entender nada
Prof, essas aulas estão no curso de python da Udemy também?