簡體   English   中英

如何使用 python 類型指定這種可變參數元組?

[英]How do I specify this kind of variable argument tuple with python typing?

我正在嘗試這樣做,但我不確定如何指定類型簽名:

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元組,但它會衰減為object

您可能希望重構代碼以使用Tuple[SignalNode, Tuple[Any, ...]]代替

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM