【问题标题】:How to access Type Hints inside of a method after it's called in Python在 Python 中调用方法后如何访问方法内部的类型提示
【发布时间】:2019-08-12 10:32:53
【问题描述】:

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

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

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

示例:

def find_integer_sum(a: int, b: int):
    utility.validate_args(args, types)
    return a + b

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

有没有办法通过类型提示访问 args?

【问题讨论】:

  • 这可能有用:github.com/RussBaz/enforce
  • @rdas 谢谢,看来我可以先使用.__annotations__ 快​​速浏览一下源代码
  • @hancho 您的头像图片从它指向的网站出现错误,我找不到其他方法来告诉您。

标签: python python-3.x type-hinting


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 1970-01-01
    • 2022-11-21
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多