Еще есть функция, которая принимает Request в качестве аргумента и возвращает ответ (соответствующего типа). Хотелось бы иметь статические подсказки для конкретного возвращаемого типа ответа в зависимости от того, какой сабкласс Request был передан.
Я пробовал так:
from typing import TypeVar, Generic, Type ResponseType = TypeVar("ResponseType") class Request(Generic[ResponseType]): response_type: Type[ResponseType] class IsProcessedStartedRequest(Request): response_type = bool class GetIdRequest(Request): response_type = str def send_request(request: Request[ResponseType]) -> ResponseType: ... request = GetIdRequest() # inferred type: GetIdRequest response = send_request(request) # inferred type: Any
Однако, тип переменной response показывается как ‘Any’, а не как ‘str’.
P.S. Если это важно, то я говорю о статических подсказках в IDE PyCharm.