86

我正在使用 python flake8库在 python 中进行 PEP8 检查。__init__.py我的一个子模块的文件中有一个导入语句,如下所示:

from .my_class import MyClass

我在 init 文件中有这一行的原因是我可以从子模块导入 MyClassfrom somemodule import MyClass而不必编写from somemodule.my_class import MyClass.

我想知道是否可以在纠正 PEP8 违规的同时保持此功能?

4

3 回答 3

128

这实际上不是 PEP8 违规。我只是这样做:

from .my_class import MyClass  # noqa

编辑:另一种可能性是使用__all__. 在这种情况下,flake8 了解发生了什么:

from .my_class import MyClass

__all__ = ['MyClass',]
于 2015-06-26T17:39:08.053 回答
41

根据PEP 8,您应该包含MyClassin __all__,这也将解决导入但未使用的问题:

为了更好地支持自省,模块应该使用 __all__ 属性在其公共 API 中显式声明名称。

于 2018-03-13T21:55:02.290 回答
9

根据flake8 的文档,您可以通过以下方式在线忽略此特定警告:

from .my_class import MyClass  # noqa: F401

作为参考,这里是 flake8 的错误代码

于 2020-03-09T03:30:52.463 回答