__init__.py 导入默认类

And*_*ara 5 python

假设我有 ClassA、ClassB 和 ClassC,它们分别位于各自的 .py 文件中ClassA.py,分别称为ClassB.py、 和ClassC.py

# Inside ClassA.py
class ClassA:
    pass
Run Code Online (Sandbox Code Playgroud)

在我的__init__.py最终结果是

from .ClassA import ClassA
from .ClassB import ClassB
from .ClassC import ClassC
Run Code Online (Sandbox Code Playgroud)

每次我添加一个新类(使用相同的结构)时,我都必须更改__init__.py. 鉴于此包中的所有文件都遵循相同的(不完全是Pythonic,但是哦)结构,是否有推荐的方法来自动执行此操作?

Ste*_*eve 1

是的你可以。这就是importlib包的用途。它包含实际执行导入的较低级别的调用。它允许您通过调用它提供的方法来进行导入。

因此,您可以使用 Pythonos.path.listdir或其他方式来了解您的子包是什​​么,然后调用以importlib导入每个子包。

我自己还没有做过很多这样的事情。只要知道这个存在就足够了。也许其他人可以为您提供更多详细信息。另外,此链接可能对您有帮助:

https://dev.to/0xcrypto/dynamic-importing-stuff-in-python--1805