python pep8 class 在 init 中已导入但未使用

python pep8 class in init imported but not used

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

from .my_class import MyClass

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

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

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

from .my_class import MyClass  # noqa

编辑:另一种可能性是使用__all__。在那种情况下,flake8 明白发生了什么:

from .my_class import MyClass

__all__ = ['MyClass',]

根据 PEP 8, you should include MyClass in __all__,这也将解决 imported-but-not-used 问题:

To better support introspection, modules should explicitly declare the names in their public API using the __all__ attribute.

根据 flake8's documention,您可以在线忽略此特定警告:

from .my_class import MyClass  # noqa: F401

供参考,这里是 flake8 的 error codes