Equivalencia desde Kotlin
Genéricos y varianza
CercanaEn Python, TypeVar covariante o contravariante para verificadores estáticos expresa la responsabilidad del fixture: Source<T> produce valores y Sink<T> los consume sin mezclar ambas responsabilidades.
Referencia Kotlin: Source<out T> es covariante y Sink<in T> es contravariante.
- Mecanismo
TypeVarcovariante o contravariante para verificadores estáticos- Riesgo de diseño
- Copiar la sintaxis de Kotlin en vez de usar
TypeVarcovariante o contravariante para verificadores estáticos.
- Recomendación
- Expón el contrato del fixture y usa
TypeVarcovariante o contravariante para verificadores estáticos solo para la garantía que realmente ofrece.
Diferencias relevantes
- La varianza puede declararse, proyectarse en el uso o no tener una noción de subtipado equivalente.
- La forma idiomática de Python debe conservarse aunque la sintaxis difiera de Kotlin.
Source<T> produce valores y Sink<T> los consume sin mezclar ambas responsabilidades.
T_co = TypeVar("T_co", covariant=True)
class Source(Protocol[T_co]):
def get(self) -> T_co: ...