从类型提示中获取原始Python类型

时间:2016-10-23 07:59:58

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

我使用现代Python类型提示,如Tuple[int,...]。 某处我需要从给定的类型提示变量中获取原始Python类型(tuplelist ...)。例如:

t = Tuple[int,...]

# Get tuple from t

1 个答案:

答案 0 :(得分:1)

简单情况:Type[type, ...]

import typing
from typing import Tuple, Optional
t = Tuple[int,...]

typing.get_origin(t)
>>> tuple

typing.get_args(t)
>>> (int, Ellipsis)

可选且嵌套:Optional[Type[type, ...]]

Optional[T]等效于Union[T, None],因此返回就像Union。嵌套类型的递归检索方式相同。

t = Optional[Tuple[int,...]]

typing.get_origin(t)
>>> typing.Union

typing.get_args(t)
>>> (typing.Tuple[int, ...], NoneType)

typing.get_origin(typing.get_args(t)[0])
>>> tuple