使用Python的typing
模块,我想创建一个自定义Type来检查参数属性的类型。更准确地说,在我的情况下,参数的类型应该是某个类的实例,而属性应该是某个类型。
通过一个最小的示例,我想实现的目标可能会更清楚:
class Wrapper:
value: typing.Any
def f(obj: WrapperType[int]) -> None:
assert isinstance(obj, Wrapper) and type(obj.value) is int
如何创建一个WrapperType
来反映此assert
的行为(在键入方面)?我在typing
模块的文档中找不到关于此的提示。但是我不确定我是否误解了那里的东西,或者我想要的东西是不可能的。
答案 0 :(得分:3)
Wrapper
应该继承自Typing.Generic
。
from typing import Generic, TypeVar
T = TypeVar('T')
class Wrapper(Generic[T]):
value: T
def f(obj: Wrapper[int]) -> None:
...