#python #pydantic
#питон #pydantic
Вопрос:
Есть ли способ определить тип атрибута модели на основе какого-либо параметра?
Я пытаюсь ввести тип возвращаемого метода, который возвращает список объектов, например:
{ "object": "type_depends_on_input_of_method", "certainty": 0.8 }
Я пытаюсь сделать так, чтобы метод принимал модель и возвращал определенный тип возвращаемого значения, чтобы выводился тип «объекта», что-то вроде этого:
CT = TypeVar("CT") class SearchReturnType(TypedDict, CT): object: CT certainty: float class SearchInterface: T = TypeVar("T") @abc.abstractmethod def search(self, text: str, model: Type[T]) -gt; List[SearchReturnType(Type[T])]:
Есть ли способ реализовать это?
Мой идеальный сценарий состоял бы в том, что если я сделаю следующее, vscode распознает тип и автозаполнение работает так, как должно:
search_interface = SearchInterfac() search_interface_response = search_interface.search("somethin", Document) first_document = search_interface_response[0].object --gt; Automatically recognized as a Document
Комментарии:
1. Я думаю, что вы просто наследуете от
typing.Generic[CT]
, а неCT
от .2. Это работает! Спасибо
Ответ №1:
Унаследовать от Generic[CT]
, а не CT
от .
class SearchReturnType(TypedDict, Generic[CT]): object: CT certainty: float
Вместо SearchReturnType
того , чтобы быть своего рода CT
, это своего рода универсальный класс, который использует CT
.