隐藏一些可能不存在的 Pylint 错误
下面这段 Python
代码被 Pylint
进行了分析:
if type(result) is array.array:
read = result.tobytes()
... 最后一行出现了以下错误:
E:401,22: Instance of 'int' has no 'tobytes' member\
(but some types could not be inferred) (maybe-no-member)
这里的 result
变量是从一个外部函数得到的。我该如何修改(纠正)代码,让 Pylint 理解呢?或者我该如何告诉它这个函数的结果可以是除了整数以外的其他类型?又或者我该如何让它忽略这一行?(我希望按照这个问题的顺序得到答案)
4 个回答
-8
不要使用
result.tobytes(),
而是用
getattr(result, 'tobytes')()
1
在使用PyLint的时候,你可以通过在终端输入以下命令来生成一个配置文件:
$ pylint --generate-rcfile > .pylintrc
生成的这个文件会处理你需要检查的错误和警告。关于“没有成员”的问题,你可以去第560行查看,那里会告诉你被忽略了。这个配置会应用到你所有的代码文件上。你也可以编辑这个配置文件,以满足你的需求。
2
我通过在命令行中加了这个选项,关闭了所有的 no-member
警告。
--disable=E1101
64
出于某种原因,pylint 这个工具没有办法识别 'result' 可能是数组类型(而且在 'if' 这个分支下肯定是数组)。目前还没有办法告诉 pylint 这一点,不过希望将来能有这个功能。所以现在,你只能通过在有问题的那一行后面或者上面加上 # pylint: disable=maybe-no-member
来关闭这个警告。例如:
if type(result) is array.array:
read = result.tobytes() # pylint: disable=maybe-no-member
或者
if type(result) is array.array:
# pylint: disable=maybe-no-member
read = result.tobytes()