编程自学网编程自学网编程自学网

模块的Python目录结构

问题描述:

我在当前目录中有以下目录和文件结构:


├── alpha

│   ├── A.py

│   ├── B.py

│   ├── Base.py

│   ├── C.py

│   └── __init__.py

└── main.py

alpha /目录下的每个文件都是它自己的类,每个类都在Base.py中使用Base类。现在,我可以在main.py中做这样的事情:


from alpha.A import *

from alpha.B import *

from alpha.C import *


A()

B()

C()


它工作正常。但是,如果我想添加一个文件和类“D”,然后在main.py中使用D(),我必须进入我的main.py并执行“from alpha.D import *”。反正有没有在我的主文件中导入,以便它导入alpha目录下的一切?


解决方法:

取决于你想要对象做什么,一个可能的解决方案可能是:

import importlib

import os


for file in os.listdir("alpha"):

    if file.endswith(".py") and not file.startswith("_") and not file.startswith("Base"):

         class_name = os.path.splitext(file)[0] 

         module_name = "alpha" + '.' + class_name

         loaded_module = importlib.import_module(module_name)

         loaded_class = getattr(loaded_module, class_name)

         class_instance = loaded_class()



未经允许不得转载:编程自学网 » 模块的Python目录结构