如何解决Pylint评级问题

3
我将尝试在以下代码上应用Pylint规则:

我正在尝试在以下代码上应用Pylint规则:

class A:
    

    @staticmethod
    def r():
        

        query = {"get_data": {"$sum": 1)},
                             "value": True}
        

这将返回结果:
a.py:8:0: R0903: Too few public methods (1/2) (too-few-public-methods)

有没有解决这个问题的想法?

只需要不要将其定义为类。没有内部状态且只有一个静态方法的类本质上并不是一个类,直接使用普通函数即可。 - juanpa.arrivillaga
1个回答

1

您可以重新思考/重构这个类,但我认为这并不必要。有时候只有一个入口点的API是有效的。如果您认为pylint的消息过于主观,甚至可以在整个项目中直接在您的pylint配置文件中添加pylint: disable=too-few-public-methods以禁用。

声明:我是pylint的维护者,我们可能会将此检查设置为可选,因为我们认为它太主观了。


1
谢谢您的这个好笔记。我可以问一下,在哪里可以找到禁用语句? - user18532875
1
如果您在本地禁用了 https://pylint.pycqa.org/en/latest/user_guide/messages/message_control.html#block-disables ,那么它应该与错误的范围相同。但我建议您直接在 pylint 配置中禁用它 https://github.com/PyCQA/pylint/blob/main/examples/pylintrc#L145。 - Pierre.Sassoulas
但我认为这是不必要的。这绝对是必要的,这根本不应该是一个类,因为它没有任何内部状态。它只有一个静态方法,所以它应该只是一个函数。 - juanpa.arrivillaga
如果你决定要使用类来做某些事情,比如 Django 中的元内部类,那么这个消息就是有意义的。一个依赖注入的类层次结构只会有一个“run”函数,也会引发这个问题,并且不容易被函数替换。请参见 https://github.com/PyCQA/pylint/issues/3512 - Pierre.Sassoulas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接