为什么Pycharm在这种情况下不显示字典方法?

时间:2016-08-15 01:19:45

标签: python dictionary pycharm

我正在尝试使用非常简单的服务从Python中的RESTfull API收集和打印数据。 这是我的代码:

import requests
import json

response = requests.get("url")
data2 = response.json()
print type(data2)

这是我的问题:当我打印data2类型时,它告诉我它是一个字典,所以当我做data2.(注意点)我的IDE应该给我一系列方法,如len(),cmp (),str()供我选择。但没有任何表现。  使用Atom的同样的事情发生在我身上。  要清楚,如果我写data2.len(),它并不是说它是一个错误,所以它识别方法。但它没有将它们作为一种建议。

我该如何解决这个问题?非常感谢你。

2 个答案:

答案 0 :(得分:2)

正如评论中提到的那样,PyCharm不知道类型,因为requests没有声明返回类型。但是可以在这里使用类型注释(参见PEP-484):

response = requests.get("url")
data2 = response.json()  # type: dict
print(type(data2))

答案 1 :(得分:0)

PyCharm无法显示您提到的方法表明无法仅从代码中推断出变量的类型。这通常表明代码可能没有准备好在所有情况下正确处理变量的数据(在许多情况下,这意味着错误的代码)。

您的代码在中将类型打印为dict,特定执行并不意味着始终是{ {1}}(否则PyCharm能够推断出类型)。

使代码更好地准备好在任何情况下处理变量的数据 - 将使类型可推断,这也将允许PyCharm正确填写数据。

例如,您可以像这样编写代码:

dict

,或者

response = requests.get("url")
data2 = response.json()
assert isinstance(data2, dict)
print type(data2)  # here data2's methods would be listed