首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python typing.get_args和typing.Union

Python typing.get_args和typing.Union
EN

Stack Overflow用户
提问于 2022-12-01 20:12:52
回答 2查看 27关注 0票数 0

使用typing.Union时,我无法获得有关该参数的任何信息

代码语言:javascript
复制
import typing

x = typing.Union[str,int]
print(typing.get_args(x))

输出:(<class 'str'>, <class 'int'>)

代码语言:javascript
复制
def f(y: typing.Union[str,int]):
    print(typing.get_args(y))

f(1)

输出:()

EN

回答 2

Stack Overflow用户

发布于 2022-12-01 21:38:18

x 类型的结合。y属于联合类型(即int类型或str类型)。

试试print(type(x))print(type(y))

在您的函数签名中,您只是注释了y应该是str类型还是int类型。因此,当您将get_args传递给函数时,您将在int上调用1

代码中的x只是该类型union对象的别名。

事实上,你可以这样做:

代码语言:javascript
复制
from typing import Union

x = Union[str, int]

def f(y: x):
    ...

这相当于:

代码语言:javascript
复制
from typing import Union

def f(y: Union[str, int]):
    ...
票数 1
EN

Stack Overflow用户

发布于 2022-12-02 08:44:07

您可以使用typing.get_type_hints()获取f的类型注释。

代码语言:javascript
复制
def f(y: typing.Union[str,int]):
    print(typing.get_type_hints(f))

f(1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74647685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档