从类型提示获取原始Python类型
我正在使用现代Python类型的提示,如从类型提示获取原始Python类型,python,python-3.x,types,type-hinting,Python,Python 3.x,Types,Type Hinting,我正在使用现代Python类型的提示,如Tuple[int,…]。 在某个地方,我需要从给定的类型提示变量中获取原始Python类型(tuple,list…)。例如: t = Tuple[int,...] # Get tuple from t 简单案例:类型[Type,…]: 导入键入 输入import Tuple,可选 t=元组[int,…] 键入。获取原点(t) >>>元组 键入.获取参数(t) >>>(int,省略号) 可选和嵌套:Optional[Type[Type,…]] AsO
Tuple[int,…]
。
在某个地方,我需要从给定的类型提示变量中获取原始Python类型(tuple
,list
…)。例如:
t = Tuple[int,...]
# Get tuple from t
简单案例:类型[Type,…]
:
导入键入
输入import Tuple,可选
t=元组[int,…]
键入。获取原点(t)
>>>元组
键入.获取参数(t)
>>>(int,省略号)
可选和嵌套:Optional[Type[Type,…]]
AsOptional[T]
相当于Union[T,None]
返回类似于Union
。嵌套类型以相同的方式递归检索
t=可选[元组[int,…]
键入。获取原点(t)
>>>打字工会
键入.获取参数(t)
>>>(键入.Tuple[int,…],非类型)
typing.get_origin(typing.get_args(t)[0])
>>>元组
类型提示仅对静态代码分析有用。丹尼尔:除了这种特殊情况之外,没有什么用处。@Daniel:但是在执行静态代码分析时,如果有一种方便的方法从注释tuple[int,float]
中获取tuple
,那肯定会很有用。我想你会被一些粗糙的选项所困扰,比如解析repr(t)
@Bakuriu:如果具体类型实际上对应于具体类型,则该函数可以很容易地为具体类型提供类型提示。例如,这些类型提示可以只提供一个concrete\u type
属性。不过,似乎不存在这样的功能。一种可能的方法是使用\uuuuuuuuuuuuuu
属性。如果存在,它的工作方式如下所示。目前,这并不适用于所有类型(例如,不适用于元组
)。注意,这是一个未记录的内部特征,可能会在没有警告的情况下被破坏;-)另外,您永远不应该修改\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。