Tema: typing
-
Clases Protocol: tipado estructural para el duck typing de Python
Un typing.Protocol declara los métodos y atributos que necesita un consumidor; cualquier objeto que los tenga satisface el tipo sin heredar de él. Definir los protocolos junto al código que depende de ellos, mantenerlos mínimos y usar runtime_checkable solo donde isinstance sea realmente necesario.
-
Iterables frente a iteradores: el protocolo detrás de los bucles for
Un iterable devuelve un iterador nuevo desde __iter__; un iterador devuelve elementos desde __next__, lanza StopIteration al terminar y debe seguir lanzándola. Un bucle for llama a iter una vez y a next repetidamente, de modo que un iterador agotado pasado a un segundo bucle parece vacío. Anotar Iterable para un solo recorrido, Sequence o Collection cuando se necesitan varios.
-
Funciones y decoradores genéricos con TypeVar, ParamSpec y la sintaxis de la PEP 695
Una variable de tipo enlaza los tipos de los parámetros y del valor de retorno; los corchetes de la PEP 695 (def f[T](...)) sustituyen a las declaraciones manuales de TypeVar, los límites (bounds) y las restricciones (constraints) tienen semánticas distintas, y ParamSpec permite que un decorador conserve la firma de la función que envuelve en lugar de reducirla a Callable[..., Any].
Legible por máquina: JSON