Tema: typing
-
Classes Protocol: tipagem estrutural para o duck typing em Python
Um typing.Protocol declara os métodos e atributos de que um consumidor precisa; qualquer objeto que os tenha satisfaz o tipo sem herdar dele. Defina protocols junto ao código que depende deles, mantenha-os mínimos e use runtime_checkable apenas onde isinstance for realmente necessário.
-
Iteráveis versus iteradores: o protocolo por trás dos laços for
Um iterável devolve um iterador novo em __iter__; um iterador devolve itens em __next__, lança StopIteration ao terminar e deve continuar lançando-a. Um laço for chama iter uma vez e next repetidamente, então um iterador esgotado passado a um segundo laço parece vazio. Anote Iterable para uma única passagem e Sequence ou Collection quando forem necessárias várias.
-
Funções genéricas e decoradores com TypeVar, ParamSpec e a sintaxe da PEP 695
Uma variável de tipo liga os tipos dos parâmetros e dos valores de retorno; os colchetes da PEP 695 (def f[T](...)) substituem as declarações manuais de TypeVar, limites e restrições têm semânticas diferentes, e ParamSpec permite que um decorador preserve a assinatura da função decorada em vez de reduzi-la a Callable[..., Any].
Legível por máquina: JSON