如何使用python类型指定这种变量参数元组?
我正在尝试这样做,但我不确定如何指定类型签名:如何使用python类型指定这种变量参数元组?,python,python-typing,Python,Python Typing,我正在尝试这样做,但我不确定如何指定类型签名: def initialize_signals( self, command: InitializeCommand, initializers: Iterable[Union[ Tuple[SignalNode], Tuple[SignalNode, Any, ...] ]]): for x, *args in
def initialize_signals(
self,
command: InitializeCommand,
initializers: Iterable[Union[
Tuple[SignalNode],
Tuple[SignalNode, Any, ...]
]]):
for x, *args in initializers:
potential_update = command.create_potential_update(x, *args)
目前没有一个注释可以表示固定长度元组与可变长度元组的相加 下面是一些我用来确定mypy的推断如何处理如下内容的代码:
from typing import Tuple
x: Tuple[int, ...]
y = ('hi', *x)
z = (*x,)
reveal_type(y)
reveal_type(z)
和输出:
$ mypy t.py
t.py:6: error: Revealed type is 'builtins.tuple[builtins.object*]'
t.py:7: error: Revealed type is 'builtins.tuple[builtins.int*]'
尽管知道它是一个可变长度的int
tuple,但它会衰减为object
您可能需要重构代码以使用
Tuple[SignalNode,Tuple[Any,…]]
来代替谢谢!我知道你建议的重构更符合逻辑。然而,这段代码被调用得太多了,以至于到处添加(,)
都会让人感到痛苦。从理论上讲,这个特性似乎可以添加到python类型中(而且不会破坏任何东西)。