微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 `typing` 对象作为参数传递?

如何解决将 `typing` 对象作为参数传递?

我正在尝试编写一个带有两个参数的函数一个变量和一个(非内置)类型。 如果变量的类型与作为第二个参数给出的类型不对应,我希望类型检查(使用 mypy)失败。

这是我尝试过的虚拟示例:

from typing import Tuple,Type,TypeVar

T = TypeVar('T')
def do_something(variable: T,typeT: Type[T]) -> str:
    # Actually,I doing something here,# this return is for the sake of simplicity the example.
    return 'done'

MyNumberT = Tuple[float,int]
foo = (42.0,42)
print(do_something(foo,MyNumberT))

mypy 抱怨以下内容error: Argument 2 to "do_something" has incompatible type "object"; expected "Type[Tuple[float,int]]"

我想我明白为什么它会失败,毕竟:

>>> type(Type[Tuple[float,int]])
<class 'typing._GenericAlias'>

所以第二个参数不是暗示类型。

但是有没有办法让这样的场景奏效?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。