Код: Выделить всё
class Map(Protocol):
def __call__(
self, func: Callable[..., T], *iterables: Iterable[Any]
) -> Iterable[T]:
...
Код: Выделить всё
def some_function(mapper: Map=map):
pass
Выражение типа «type[map[Unknown]]» не может быть присвоено параметру типа «Map».
Ни одна перегруженная функция не соответствует введите "(func: (...) -> T@call, *iterables: Iterable[Any]) -> Iterable[T@call]"
Код работает нормально, но я также хочу, чтобы подсказки типов были правильными. как мне это исправить?
Я пытался заставить это работать и наоборот:
Код: Выделить всё
def some_function(mapper: type[map]=map): # totally fine :)
pass
# MultiProcessingMap is an instance that conforms to the Map protocol
some_function(mapper=MultiProcessingMap(5)) # compile time error, runtime fine
Тип «MultiProcessingMap» не может быть присвоен типу "type[map[Unknown]]"
Бонусный вопрос: как можно расширить подсказку типа Map, чтобы она также охватывала типы аргументов func ?
Подробнее здесь: https://stackoverflow.com/questions/776 ... ternatives