【问题标题】:Python directory structure for modules模块的 Python 目录结构
【发布时间】:2019-04-24 21:25:08
【问题描述】:

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

├── 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 目录下的所有内容?

【问题讨论】:

  • 你试过importlib吗? :-)(见下面我的回答)

标签: python class module directory-structure


【解决方案1】:

取决于您尝试对对象执行的操作,一种可能的解决方案可能是:

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()

使用* 导入所有内容不是一个好习惯,因此如果您的文件只有一个类,则导入此类会“更干净”(class_name 在您的情况下)

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多