定义自定义装饰器,例如staticmethod

时间:2019-11-18 14:45:49

标签: python pylint factory-boy

我使用factory-boy软件包和pylint进行静态掉毛。对于以下代码,lint会发出no-self-argument错误。

import factory
from factory import Factory, Faker

class MyTestFactory(Factory):
    class Meta:
        model = dict

    a = Faker("pyint")
    b = Faker("pyint")

    @factory.lazy_attribute
    def a_and_b(obj):  # <-- no-self-argument here
        return obj.a + obj.b

if __name__ == "__main__":
    O1 = MyTestFactory.build()
    print(f"dbg: {O1=}")
  

example2.py:12:4:E0213:方法应将“自我”作为第一个参数(无自我参数)

我不想完全隐藏邮件。但是,相反,我想告诉pylint,@factory.lazy_attribute装饰器的行为类似于内置的@staticmethod,因此该方法所需的参数更少。可能吗? pylintrc中是否有一个特殊设置负责静态方法的声明?

1 个答案:

答案 0 :(得分:1)

根据doc

  

这装饰了一个实例方法,该方法应采用单个参数self;方法的名称将用作属性的名称,以填充方法的返回值:

这意味着您应该将参数命名为self,而不是obj