我有几节课:
class Sup:
def meth (self, ?????):
pass
class Sub1(Sup):
def meth (self, foo = 1):
...
class Sub2(Sup):
def meth (self, bar = 2, baz = 3):
...
如何用{?1}替换?????
中的Sup.meth
?
基本上,我想要一些类似于Lisp中被忽略的&rest
lambda-list关键字来安抚arguments-differ/Arguments number differs from overridden method
警告。
我尝试了什么:
**kwargs
添加到Sup.meth
- 没有改变任何内容Sub*.meth
注释# pylint: disable=arguments-differ
- 有效,但很难看。 PS。 Sup
是一个收集统计数据的抽象类; Sub*
是不同的方法; meth
使用不同的铃声和口哨打印对象。
答案 0 :(得分:3)
我发现pylint对许多Python功能有不寻常的看法。它认为some_function(*list_of_args)
是“坏魔法”,例如(W0124)。
当你和pylint 从不同意“问题”时,解决方案不是代码中的奇怪评论,而是永远在~/.pylintrc
中消除该消息。 (pylint --generate-rcfile
将吐出一个您可以自己编辑的示例配置文件。)在那里,您可以设置:
故意未使用的变量的正则表达式:dummy-variables-rgx=_$|__$
变量,类和常量名称的正则表达式:function-rgx=[a-z_][a-z0-9_]{0,30}$
使个别警告或整个讯息类别(“IRCWEF”之一)保持沉默:disable=I0011,W0142,R
。
~/.pylintrc
是唯一的方式我发现你可以禁用某些东西 - 比如“I0011: "Locally disabling %s"
,因为本地静音I0011本身会生成另一条I0011消息(其中是彻头彻尾的虐待狂。)
对于项目,我通常会创建一个单行shell脚本来进一步禁用我不想修复的内容:
#!/bin/bash
pylint --output=colorized --disable=C0103 *.py | less -R -
# :C0103 (invalid-name): *Invalid name "%s" for type %s (should match %s)*
翻译:“我已经知道前一个人有自己的命名惯例,所以请不要再告诉我8000次。”
答案 1 :(得分:0)
您应该查看*args
的位置参数和**kwargs
的关键字参数。
此处提供了更多信息:*args and **kwargs?