Аннотация типов TypeVar
Почему нет разницы между TypeVar('T')
и TypeVar('T', contravariant=True)
работает одинаково и проходит проверки от mypy
from typing import TypeVar, List
#T = TypeVar('T') # Определение T как контравариантного
T = TypeVar('T', contravariant=True)
def process_data(data: List[T]) -> None:
for item in data:
print(item)
object_list: List[object] = [1, 'hello', {'key': 'value'}]
process_data(object_list)
P.S.
TypeVar('T')
- Это означает, что можно использовать только изначально указанный тип. Таким образом, параметр инвариантного универсального типа не является ни ковариантным, ни контрвариантным.