请仔细观察问题并仔细查看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
我是唯一一个拥有此产品的人吗?这是为什么?是否有解决方案使这个警告消失?
答案 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时遇到问题。