为了账号安全,请及时绑定邮箱和手机立即绑定

如何禁用任何使用我的函数的 pylint 检查?

如何禁用任何使用我的函数的 pylint 检查?

开心每一天1111 2023-03-16 09:05:41
我制作了一个classproperty描述符,每当我使用用它装饰的函数时,我都会收到多个pylint检查错误。这是一个带有示例装饰函数的示例类:class Bar:    """    Bar documentation.    """    # pylint: disable=no-method-argument    @classproperty    def foo():        """        Retrieve foo.        """        return "foo"多亏了描述符,我可以调用Bar.foo并获取返回的字符串foo。不幸的是,每当我将这样的函数用于稍微复杂的项目(例如返回对象实例的函数)时,pylint就会开始抱怨诸如no-memberor之类的东西unexpected-keyword-arg,仅仅是因为它认为Bar.foo是一个方法,而不是一个包装的classproperty对象。我想禁用任何使用我的函数的代码的警告- 我绝对不能允许# pylint: disable每次使用classproperty-wrapped 方法时都必须编写。我该怎么做呢pylint?或者也许我应该改用其他 linter?以下是由于上述原因生成的警告示例:class Bar:    """    Bar documentation.    """    # pylint: disable=no-method-argument    @classproperty    def foo():        """        Retrieve an object.        """        return NotImplementedError("Argument")print(Bar.foo.args)pylint抱怨E1101: Method 'foo' has no 'args' member (no-member)(即使我知道它肯定有),我想完全禁用任何使用Bar.foo.args或类似的模块/类/函数的警告。对于任何感兴趣的人,这里是描述符的最小实现classproperty:class classproperty:    """    Minimal descriptor.    """    # pylint: disable=invalid-name    def __init__(self, func):        self._func = func    def __get__(self, _obj, _type):        return self._func()
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

我设法通过将项目类型提示为以下内容来创建一个肮脏的黑客None:


class Bar:

    """

    Bar documentation.

    """

    # pylint: disable=no-method-argument,function-redefined,too-few-public-methods

    foo: None


    @classproperty

    def foo():

        """

        Retrieve an object.

        """

        return NotImplementedError("Argument")

我宁愿避免使用这样的代码,因为由于循环导入问题(因此None),我实际上无法导入应该进行类型提示的项目,但它的技巧pylint很好。


查看完整回答
反对 回复 2023-03-16
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

据我所知,这是不可能的。


我还没有找到在pylint的配置中解决这个问题的方法。我能找到的最接近的是选项property-classes,但它只影响invalid-name检查器,所以不是我们在这里寻找的:


:property-classes:

  List of decorators that produce properties, such as abc.abstractproperty. Add

  to this list to register other decorators that produce valid properties.

  These decorators are taken in consideration only for invalid-name.


  Default: ``abc.abstractproperty``

也许这是一个值得直接询问pylint的开发人员的问题。

在我看来,它可以通过转换插件来解决(也许这是为了灵感?)。Pylint可以很好地处理@property装饰器,所以像这里建议的那样@classproperty,也应该是可行的。



查看完整回答
反对 回复 2023-03-16
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信