Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python类型指定这种变量参数元组?_Python_Python Typing - Fatal编程技术网

如何使用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类型中(而且不会破坏任何东西)。