使用typing.Union
时,我无法获得有关该参数的任何信息:
import typing
x = typing.Union[str,int]
print(typing.get_args(x))
输出:(<class 'str'>, <class 'int'>)
def f(y: typing.Union[str,int]):
print(typing.get_args(y))
f(1)
输出:()
x
is类型的联合。y
为联合类型(即int
或str
)。
尝试print(type(x))
和print(type(y))
。
在函数签名中,您仅仅注释了y
应该是str
类型或int
类型。因此,当您将1
传递给函数时,您将在int
上调用get_args
。
代码中的x
只是该类型联合对象的别名。
事实上,你可以这样做:
from typing import Union
x = Union[str, int]
def f(y: x):
...
这相当于:
from typing import Union
def f(y: Union[str, int]):
...
您可以使用typing.get_type_hints()
来获取f
的类型注释:
def f(y: typing.Union[str,int]):
print(typing.get_type_hints(f))
f(1)