使用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模块的文档中找不到关于此的提示。但是我不确定是否误解了那里的东西,或者我想要的东西是否只是不可能。

最佳答案

Wrapper应该从Typing.Generic继承。

from typing import Generic, TypeVar

T = TypeVar('T')

class Wrapper(Generic[T]):
    value: T


def f(obj: Wrapper[int]) -> None:
    ...

关于python - 自定义类型参数的强制属性类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58937190/

10-12 05:19