Python PEP8规范:在__init__中导入的类未被使用

114

我正在使用 Python 的 flake8 库进行 PEP8 检查。在我的子模块的一个 __init__.py 文件中,我有一个导入语句,看起来像这样:

from .my_class import MyClass

我在init文件中添加这行代码的原因是可以通过from somemodule import MyClass导入子模块中的MyClass,而不必写成from somemodule.my_class import MyClass

请问是否有可能在纠正PEP8违规的同时保留此功能?

4个回答

177

这并不是 PEP8 违规。我只是这样做:

from .my_class import MyClass  # noqa

编辑:另一种可能性是使用__all__。 在这种情况下,flake8可以理解正在发生的情况:

from .my_class import MyClass

__all__ = ['MyClass',]

62
根据PEP 8,你应该在__all__中包含MyClass,这也会解决导入但未使用的问题:

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


20
根据 flake8 文档,您可以使用以下方法在代码中忽略此特定警告:
from .my_class import MyClass  # noqa: F401

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


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接