init中导入但未使用的python pep8类

Sal*_*ius 26 python pep8 flake8

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

from .my_class import MyClass
Run Code Online (Sandbox Code Playgroud)

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

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

Ren*_*erg 50

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

from .my_class import MyClass  # noqa
Run Code Online (Sandbox Code Playgroud)

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

from .my_class import MyClass

__all__ = ['MyClass',]
Run Code Online (Sandbox Code Playgroud)

  • 使用`__all__`的建议奏效了!谢谢. (6认同)

Mih*_*otă 11

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

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


Mik*_*e T 6

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

from .my_class import MyClass  # noqa: F401
Run Code Online (Sandbox Code Playgroud)

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