【发布时间】:2017-03-05 04:35:44
【问题描述】:
我正在使用现代 Python 类型提示,例如 Tuple[int,...]。
在某个地方,我需要从给定的类型提示变量中获取原始 Python 类型(tuple、list...)。例如:
t = Tuple[int,...]
# Get tuple from t
【问题讨论】:
-
类型提示仅对静态代码分析有用。除了这种特殊情况,没有多大用处。
-
@Daniel:但是在执行静态代码分析时,有一种方便的方式从注解
Tuple[int, float]中获取tuple肯定会很有用。 -
我认为你被诸如解析
repr(t)之类的粗糙选项所困扰。 -
@Bakuriu:但是,如果它们实际上对应于具体类型,则可以很容易地存在将类型提示用于具体类型的函数。例如,那些类型提示可以只提供一个
concrete_type属性。不过,似乎不存在这样的功能。 -
一种可能的方法是使用
__extra__属性。如果它存在,它就像List[int].__extra__ == list一样工作。目前,这不适用于所有类型(例如不适用于Tuple)。请注意,这是一个未记录的内部功能,可能会在没有警告的情况下被破坏;-) 此外,您永远不应该修改__extra__,否则事情可能会非常糟糕。
标签: python python-3.x types type-hinting