为什么这个警告“预期类型'int'(匹配泛型类型'_T'),得到'Dict [str,None]'而不是”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么这个警告“预期类型'int'(匹配泛型类型'_T'),得到'Dict [str,None]'而不是”?相关的知识,希望对你有一定的参考价值。

请仔细观察问题并仔细查看this and you'll see it's not a duplicate的答案,特别是因为他们不回答我的问题。

尝试创建一个新的空项目,并添加此代码。没有警告,它工作正常:

game_data = {'boats': [], }
game_data['boats'].append({'name': None})

现在将其更改为:

game_data = {'boats': [], 'width': None, 'height': None, }
game_data['boats'].append({'name': None})

仍然没有警告。并再次改为:

w = 12
game_data = {'boats': [], 'width': None, 'height': w, }
game_data['boats'].append({'name': None})

现在你会得到:

Expected type 'int' (matched generic type '_T'), got 'Dict[str, None]' instead

我是唯一一个拥有这个的人吗?这是为什么?是否有解决方案使这个警告消失?

答案

我的猜测是提供此警告的分析不够清晰。

的值类型

game_data = {'boats': [], 'width': None, 'height': None} 

无法确定。

你输入的第一个“真实”值是一个int:

w = 12
game_data = {'boats': [], 'width': None, 'height': w}

所以PyCharm认为这是一个dict(string->int)

然后将内部字典作为值添加到空列表中:

game_data['boats'].append({'name': None})

所以现在它有一个dict(string-> int)突然变成混合的东西并警告你。

这与What does this warning in PyCharm mean?的内容大致相同:使用pycharm作为IDE将int添加到list of strings中。

至于如何摆脱警告:Jetbrains Resharper是非常可配置的,我猜pycharm也是如此。这个文档https://www.jetbrains.com/help/pycharm/configuring-inspection-severities.html#severity可能会帮助你配置严重性 - 如果不是我确信Jetbrains的支持是渴望帮助你 - 他们是每当我使用resharper时遇到问题。

以上是关于为什么这个警告“预期类型'int'(匹配泛型类型'_T'),得到'Dict [str,None]'而不是”?的主要内容,如果未能解决你的问题,请参考以下文章

为什么我得到这个perl Net :: Async :: HTTP警告?

参考 tkinter 这个警告是啥意思?

警告 C4047:“int **”与“int[2][4]”的间接级别不同 [重复]

为啥这个 type_traits 代码会给我一个整数到指针转换警告?

Next.jsReact在组件中生成随机值时发出警告

警告:不要多次处理对象[重复]