python模块实例化_在Python中动态导入模块并实例化类

我的问题与this one相似,不过我想更进一步。

我正在分析一个配置文件,该文件按名称调用多个操作(带参数)。例如:"on_click": "action1", "args": {"rate": 1.5}

action是python类,继承自基Action类,可以采用命名参数。它们存储在项目的“actions”子目录中,前缀为a_。我只需添加新的文件就可以了。项目结构如下:

^{pr2}$

所有的action类都提供一个PerformAction()方法和一个GetName()方法,这就是配置文件所引用的。在这个例子中,a_pretty.py定义了一个名为PrettyPrinter的类。对PrettyPrinter调用GetName()返回“action1”。在

我想将PrettyPrinter类添加到一个以“action1”为键的字典中,这样我可以像下面这样实例化它的新实例:args = {'rate': the_rate}

instantiated_action = actions['action1'](**args)

instantiated_action.PerformAction()

目前,我有以下几点:actions = [os.path.splitext(f)[0] for f in os.listdir("actions")

if f.startswith("a_") and f.endswith(".py")]

for a in actions:

try:

module = __import__("actions.%s" % a, globals(), locals(), fromlist=["*"])

# What goes here?

except ImportError:

pass

这是导入操作文件,如果我打印dir(module)我会看到类名;我只是不知道下一步该做什么(或者整个方法是否是正确的方法…)。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值