应为类型联合[str,bytes,int],但获得序列[Union[int,float,str]]

2024-04-23 15:20:46 发布

您现在位置:Python中文网/ 问答频道 /正文

PyCharm显示了这个警告,我不知道为什么

def record(self, *data: Sequence[Union[int, float, str]]) -> None:

    for field, value in zip(self.fields, data):
        if field.type in {1, 3}:
            try:
                value = int(value)  # warning is here
            except ValueError:
                pass

    # other logic...

它说value来自解包zipvalue与参数data的类型相同,但它不是,也不应该是。如果它是Sequence的元素,则意味着它将是Union[int, float, str]类型

PyCharm没有意识到zip被解包了吗


Tags: inself警告类型fielddatavaluedef
1条回答
网友
1楼 · 发布于 2024-04-23 15:20:46

对于PEP 484,类型提示应用于*data的每个元素,而不是序列本身。你不需要Sequence;这已经被*所暗示

def record(self, *data: Union[int, float, str]) -> None:

相关问题 更多 >