强制自定义类型参数的属性类型
Enforcing Type of Attribute of Argument of Custom Type
使用 Python 的 typing
模块,我想创建一个自定义类型来检查参数的属性类型。更准确地说,在我的例子中,参数的类型应该是某个 class 的实例,并且属性应该是某个 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
模块的文档中找到这方面的提示。但是我不确定我是否误解了其中的内容,或者我想要的是不可能的。
Wrapper
应该继承自 Typing.Generic
.
from typing import Generic, TypeVar
T = TypeVar('T')
class Wrapper(Generic[T]):
value: T
def f(obj: Wrapper[int]) -> None:
...
使用 Python 的 typing
模块,我想创建一个自定义类型来检查参数的属性类型。更准确地说,在我的例子中,参数的类型应该是某个 class 的实例,并且属性应该是某个 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
模块的文档中找到这方面的提示。但是我不确定我是否误解了其中的内容,或者我想要的是不可能的。
Wrapper
应该继承自 Typing.Generic
.
from typing import Generic, TypeVar
T = TypeVar('T')
class Wrapper(Generic[T]):
value: T
def f(obj: Wrapper[int]) -> None:
...