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

问题描述 投票:2回答:1

请仔细观察问题并仔细查看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

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

python pycharm
1个回答
3
投票

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

的值类型

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时遇到问题。

© www.soinside.com 2019 - 2024. All rights reserved.