为什么这个警告是“需要类型'int'(匹配的泛型类型'T'),而得到'Dict[str,None]'?

2024-04-29 09:54:30 发布

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

请仔细观察问题和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

只有我有这个吗?为什么会这样?有没有办法消除这个警告?


Tags: andnamenoneyougame警告datatype
1条回答
网友
1楼 · 发布于 2024-04-29 09:54:30

我的猜测是给出这个警告的分析不够清晰。

的值类型

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

无法确定。

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

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

因此PyCharm假设这是一个dict(string->int)

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

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时它们都会出现问题。

相关问题 更多 >