【发布时间】:2016-06-09 21:03:39
【问题描述】:
这似乎与Type Hinting: Argument Of Type Class 相似,但是,那里接受的答案实际上并没有回答我的问题,所以问题可能表达不正确(?)
我有一个序列化/反序列化框架,可以从 [IDE 支持的] 类型提示中受益匪浅。 API 如下所示:
def serialize(obj:BaseModel) -> Dict[str,Any]:
""" Serialize the object to a dictionary. """
def deserialize(data:Dict[str,Any], clazz:type) -> BaseModel:
""" Deserialize dictionary into a model object of type clazz. """
序列化方法很好,但反序列化类型提示不是最佳的。我想指出反序列化的返回值将是clazz 类型的对象(它是BaseModel 的子类)。这似乎是泛型可以提供帮助的东西,但我不确定如何表达我想要的。
T = TypeVar('T', bound=BaseModel)
def deserialize(data:Dict[str,Any], clazz:T) -> T:
""" Deserialize dictionary into a model object of type clazz. """
这似乎是错误的,因为 clazz 是从 T 派生的 类 而不是 T 类型的 对象(实例)。
我已经阅读了一些内容,但没有找到答案(谷歌搜索这个特定问题也很棘手)。是否有一些明显的我在这里遗漏了,或者这只是 python 3.5 输入模块不支持?
当然,我仍然受制于推断类型的工具,但希望如果有正确的方法可以做到这一点,它将由类型检查实用程序实现。
【问题讨论】:
标签: python python-3.x generics type-hinting