`__getattr__` vs `__getattribute__`: la diferencia que importa
Cuándo Python invoca cada uno, por qué `__getattribute__` sin `super()` causa recursión infinita y cómo elegir el correcto según tu caso de uso.
Cuándo Python invoca cada uno, por qué `__getattribute__` sin `super()` causa recursión infinita y cómo elegir el correcto según tu caso de uso.
Cómo inspeccionar y modificar objetos en runtime usando las funciones de introspección de Python, con casos reales de serialización y configuración dinámica.
Comparativa práctica de los tres principales type checkers de Python, configuración progresiva de strictness y su integración en CI.
Cómo definir interfaces por estructura con Protocol, sin herencia explícita, verificadas estáticamente y opcionalmente en runtime.
Herramientas de tipado preciso para diccionarios estructurados, tipos nominales, valores exactos e inmutabilidad estática sin complicar el código.
Cómo usar TypeVar para expresar relaciones de tipo entre argumentos y retornos, con restricciones, bounds y la sintaxis PEP 695.
Cubre la sintaxis completa de anotaciones en Python: tipos básicos, colecciones genéricas modernas, Union con |, Optional, Any y los tipos abstractos de collections.abc.
Los type hints no afectan el runtime: son contratos para herramientas y desarrolladores que resuelven el problema de legibilidad en codebases grandes con tipado gradual.
Implementación de __aenter__/__aexit__, asynccontextmanager, locks seguros y composición de múltiples contextos async en pipelines reales.
Gestión dinámica de recursos con ExitStack, supresión limpia de excepciones con suppress, y adaptadores como nullcontext y closing del módulo contextlib.