我的问题与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)我会看到类名;我只是不知道下一步该做什么(或者整个方法是否是正确的方法…)。在