python-3.x - 在运行时加载自定义类
问题描述
我有下面的代码片段,我试图从一个名为的目录加载自定义类,source
但不断收到错误消息module 'source' has no attribute 'custom_class_1_src'
。
文件夹结构:
main.py
source
+----__init__.py
+----custom_class_1_src.py
+----custom_class_2_src.py
每个类的类名与第一个字母大写的文件相同,因此类名将在下面,并且两个文件中都有一个__init__
方法:
Custom_class_1
Custom_class_2
主文件
import os, pathlib, importlib
def load_class(source, class_name):
try:
importlib.invalidate_caches()
module = importlib.import_module('source', source)
class_ = getattr(module, "{}".format(class_name))
instance = class_()
except Exception as ex:
print(ex)
source_directory = str(pathlib.Path(__file__).parent.absolute()) + "/source/"
sources = sorted([f for f in os.listdir(source_directory) if os.path.isfile(os.path.join(source_directory, f)) and f.endswith('_src.py')])
for source in sources:
class_name = source.replace("_src.py", "").capitalize()
load_class(source, class_name)
custom_class_1_src.py
class Custom_class_1:
def __init__(self):
print("found one file")
解决方案
推荐阅读
- css - 我可以在 ngx-Loading 中使用自定义动画吗?
- c# - dotnet core 2.1 应用程序的“HTTP 错误 502.5 - 进程失败”
- python - Pytest - 从另一个夹具调用夹具
- javascript - 我正在尝试获取一个将输入数据分配给 var 的文本框,然后运行该函数将其转换为 YouTube 嵌入 url 并显示
- javascript - 提要已加载... Instagram 提要未加载
- javascript - 知道图像是否过大
- python - 如何在熊猫中平均分组值,同时忽略那些满足测试的值?
- java - 将 .ser 文件从以前的项目复制粘贴到新项目时出现 Classnotfoundexception
- c# - 推送通知系统返回一个内部服务器
- goland - Goland Linux 中的 Goland Mac "cmd + [" 和 "cmd + ]" 等效项