覆盖子类中的“标准”方法时,pylint W0622(重新定义内置)

Sta*_*opo 5 python warnings coding-style software-quality pylint

在 Python 中,许多方法使用“标准化”名称定义参数变量,例如:

def __exit__(self, type, value, traceback):
Run Code Online (Sandbox Code Playgroud)

在上面的行中,变量类型导致 pylint 警告 (W0622) 正在重新定义内置函数:Redefining built-in 'type' (redefined-builtin)

有很多方法可以解决这个问题并使 pylint 满意(重命名变量,添加 pylint 指令(#pylint: disable=W0622)以忽略问题等)。

在这些情况下,保持良好的代码质量并使 pylint 满意的最佳/首选/建议/常规使用方法(如果有)是什么?

sco*_*omb 3

禁用 pylint 警告可能被认为是一种不好的做法。

引用quantifiedcode.com

为了__exit__正常工作,它必须具有三个参数:Exception_type、Exception_value 和 Traceback。方法定义中的形式参数名称不需要直接对应于这些名称,但它们必须按此顺序出现。

因为这样一个好的选择可能是使用元组包装def __exit__(self, *exc)

这是官方文档中建议的内容: https ://docs.python.org/3/library/contextlib.html

  • 如果我按照建议执行此操作, pylint 会发出警告:“参数与覆盖的 '__exit__' 方法不同”。所以这只是将一个 pylint 警告替换为另一个警告。 (3认同)