2012-02-01 96 views
18

我们有似乎并不需要__init__众多蟒类,初始化它们空的或者是完全可以接受的,甚至最好。 PyLint似乎认为这是一件坏事。我错过了一些洞察,为什么没有__init__是一种难闻的气味?或者我应该压制这些警告并克服它?为什么PyLint会提示没有__init__?

+0

做这些类没有属性可言,还是你创建对象后添加属性? – delnan 2012-02-01 17:48:28

+0

要么。在前一种情况下,我可以看到,这本身就是一种难闻的气味,但不是我现在不想进入。在后一种情况下,如果我在有意义的初始化之前尝试使用它,我宁愿有Attribute Exception。 – Pete 2012-02-01 17:50:55

+0

你会有一些代码和pylint输出显示吗?由于某种原因,Pylint经常抱怨__init__。如果真的没有,那么它需要一个修复:) – sthenault 2012-02-02 08:29:22

回答

11

什么是您使用这些类呢?

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

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

话虽这么说,如果你不需要一个__init__(),随意忽略警告。

编辑:根据您的评论,你似乎很好用的AttributeError你会在初始化之前引用变量。这是对你的类进行编程的完美方式,所以在这种情况下,忽略来自PyLint的警告是合理的。

1

通常你至少会使用__init__()方法来初始化实例变量。如果你没有这样做,那么通过一切手段关掉那个警告。

相关问题