为什么PyLint警告没有__init__?

时间:2012-02-01 17:46:36

标签: python pylint

我们有许多似乎不需要__init__的python类,将它们初始化为空是完全可接受的甚至更可取的。 PyLint似乎认为这是一件坏事。我错过了一些有关为什么没有__init__是不好气味的见解?或者我应该压制这些警告并克服它?

2 个答案:

答案 0 :(得分:12)

你在为这些课程使用什么?

如果它们只是一组不需要维护任何状态的函数,则不需要__init__(),但将所有这些函数移动到它们自己的模块中会更有意义。 / p>

如果他们确实维护状态(他们有实例变量)那么你应该有一个__init__(),以便可以初始化这些变量。即使您在创建类时从未为它们提供值,通常最好定义它们,以便您的方法调用不引用可能存在或可能不存在的实例变量。

话虽如此,如果您不需要__init__(),请随意忽略该警告。

编辑:根据您的评论,您似乎对使用AttributeError很好,您将在初始化之前引用变量。这是编写类的一种非常好的方法,因此在这种情况下忽略来自PyLint的警告是合理的。

答案 1 :(得分:1)

通常,您至少会使用__init__()方法初始化实例变量。如果您不这样做,那么请务必关闭该警告。