为什么会出现此警告"预期类型' int' (匹配的通用类型' _T'),得到了Dict [str,None]'代替&#34 ;?

时间:2018-01-06 23:08:38

标签: python pycharm

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

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

1 个答案:

答案 0 :(得分:2)

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

的值类型
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 string中。

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