Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 25, 2021 12:28:59

Thoufak
Зарегистрирован: 2021-04-25
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Дженерики: вывод дженерик типа из аттрибута класса.

Допустим, у меня есть несколько типов запросов, каждый из которых соответствует ровно одному типу ответа. Каждый запрос представлен подклассом от 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

Однако, тип переменной response показывается как ‘Any’, а не как ‘str’.

P.S. Если это важно, то я говорю о статических подсказках в IDE PyCharm.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version