如何根据方法输入动态键入属性 (Python)

How to dynamically type properties based on method input (Python)

有没有办法根据某种参数推断模型属性的类型?

我正在尝试键入 return 类型的方法,该方法 return 是一个对象列表,例如:

{
    "object": "type_depends_on_input_of_method",
    "certainty": 0.8
}

我正在努力使该方法接受一个模型和 return 一个特定的 return 类型,以便推断出“对象”的类型,如下所示:

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]) -> List[SearchReturnType(Type[T])]:

有没有办法实现这个?

我理想的情况是当我执行以下操作时,vscode 识别类型并且自动完成工作正常:

search_interface = SearchInterfac()
search_interface_response = search_interface.search("somethin", Document)
first_document = search_interface_response[0].object --> Automatically recognized as a Document

继承自 Generic[CT] 而不是 CT

class SearchReturnType(TypedDict, Generic[CT]):
    object: CT
    certainty: float

SearchReturnType 不是 CT 的一种,而是 使用 CT 的一种通用 class。