Pylint - 如何修复ID:maybe-no-member errors?

时间:2014-03-30 21:24:39

标签: python pylint

我是pylint的新手。我通过pylint运行以下内容并在尝试迭代字典时遇到错误:

"ID:maybe-no-member Instance of 'bool' has no 'iteritems' member (but some types could not be 
 inferred)"

这是一个Flask应用程序,我通过AJAX将json编码的字典传递给'/ my_endpoint /'。然后,我需要遍历该字典并做一些事情。

@app.route('/my_endpoint/')
def my_endpoint():
    """My Description"""
    try:
        my_params = json.loads(request.args.get('names'))
    except TypeError:
        my_params = None

    if my_params is not None:
        for key,value in my_params.iteritems(): # error occurs here
            ...

尝试谷歌错误不会导致任何描述错误的含义或任何解决方案。谢谢!

1 个答案:

答案 0 :(得分:3)

我怀疑(这是一个疯狂的猜测)Pylint抱怨,因为json.loads 可以返回bool,如果要求解码像"false"这样的字符串。而生成的bool实际上没有名为iteritems的方法。

但是后来既不会是字符串,也不是列表或数字,所以我不知道为什么它会选择bool。也许是因为它首先在所有可能的类型中按字母顺序排列。

明确的isinstance(my_params, dict)检查是否让它开心?