Предположим, я хочу написать универсальный класс, используя mypy, но аргумент типа для класса сам по себе является универсальным типом. Например:
from typing import TypeVar, Generic, Callable
A = TypeVar("A")
B = TypeVar("B")
T = TypeVar("T")
class FunctorInstance(Generic[T]):
def __init__(self, map: Callable[[Callable[[A], B], T[A]], T[B]]):
self._map = map
def map(self, x: T[A], f: Callable[[A], B]) -> T[B]:
return self._map(f, x)
Когда я пытаюсь вызвать mypy в приведенном выше определении, я получаю сообщение об ошибке:
$ mypy typeclasses.py
typeclasses.py:9: error: Type variable "T" used with arguments
typeclasses.py:12: error: Type variable "T" used with arguments
Я попытался добавить ограничения к определению T
TypeVar
, но не смог выполнить эту работу. Возможно ли это сделать?