加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

最佳实践:python中的动态方法执行

发布时间:2020-12-20 12:21:26 所属栏目:Python 来源:网络整理
导读:我刚刚开始使用 Java,C,c等多年的python. 我有一长串文件/模块,每个文件/模块包含一个我想动态调用的主要方法.对于每个关键字,我有一个名为get_foo的.py文件,并且在每个get_foo.py中都有一个foo方法.所以我想传入命令名“foo”并执行方法get_foo.foo() 我真
我刚刚开始使用 Java,C,c等多年的python.
我有一长串文件/模块,每个文件/模块包含一个我想动态调用的主要方法.对于每个关键字,我有一个名为get_foo的.py文件,并且在每个get_foo.py中都有一个foo方法.所以我想传入命令名“foo”并执行方法get_foo.foo()

我真的不想用丑陋的if / then / else块来做这件事

sections = [ "abstract","claim","drawing","examiner"]
command = "claim"

我想要什么样的东西

exec("get_" + command + "." + command)

但我真的不知道exec / eval / etc的哪个区域可以做到这一点.

解决方法

使用 importlib module动态导入,使用getattr()查找函数:

import importlib

def call_command(cmd):
    mod = importlib.import_module('get_' + cmd)
    func = getattr(mod,cmd)
    return func()

或者,只需导入所有模块并将它们添加到dict to map命令到callable:

import get_foo,get_bar,get_baz

commands = dict(foo=get_foo.foo,bar=get_bar.bar,baz=get_baz.baz)

def call_command(cmd):
    return commands[cmd]()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读