Форум сайта python.su
Допустим, у меня есть несколько типов запросов, каждый из которых соответствует ровно одному типу ответа. Каждый запрос представлен подклассом от Request.
Еще есть функция, которая принимает 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
Офлайн