在Python中调用方法后如何在方法内部访问类型提示

han*_*cho 8 python type-hinting python-3.x

我开始在大型代码库中实现类型提示,该代码库由多个开发人员进行工作,以提高函数应作为参数的透明度。

我还想验证传递给函数的参数是否为正确的类型。

这在函数内部很容易做到,但这似乎不是pythonic。我想制作一个可以从函数传递args和类型的实用程序,如果为对应的arg传递了错误的类型,则会引发异常。

例:

def find_integer_sum(a: int, b: int):
    utility.validate_args(args, types)
    return a + b
Run Code Online (Sandbox Code Playgroud)

我想要的是以某种方式将args和类型传递给函数,而无需始终手动插入,utility.validate_args({a: int, b: int})因为这样会很麻烦。

有没有一种方法可以使用其类型提示访问args?

Chr*_*ert 7

从 Pythontyping文档中,您可以使用typing.get_type_hints().

typing.get_type_hints(obj[, globals[, locals]])
返回包含函数、方法、模块或类对象的类型提示的字典。

这通常与 相同obj.__annotations__。此外,编码为字符串文字的前向引用是通过在globalslocals命名空间中求值来处理的。如有必要,如果设置了Optional[t]等于的默认值,则为函数和方法注释添加。None对于一个类,返回一个通过逆序合并C所有的字典构造的字典。__annotations__C.__mro__