Python 如何运行拼接后的方法?

狂天 · 2022年03月30日 · 最后由 rhyme 回复于 2022年04月01日 · 3528 次阅读

一般 python 中运行方法是这样:

我把我想要按顺序执行的方法写到一个 list 里

然后通过方法名 +() 的形式拼出我要运行方法

现在问题来了,这样拼出的方法可咋执行呢?请教下各位大佬

最佳回复
共收到 21 条回复 时间 点赞
狂天 回复

你的 list 不要放字符串啊,直接放方法名,不可能不行的

python 代码从上到下执行的,挨个调用不好吗,搞这么多愚蠢的代码太不优雅了,就像 LS 一样,让别人怎么看得下去。

反射或者 eval()

getattr 了解下

综合了上面大佬们的指点,都试了一下

kangaroo 回复

学到了学到了 谢谢大佬

重来看雨 回复

学到了学到了 谢谢大佬

class Example(object):
    def __init__(self):
        pass
    def run(self):
        print("run")

    def start(self):
        print("start")

    def end(self):
        print("end")

if __name__ == '__main__':
    e = Example()
    list =["run","start","end"]
    for i in list:
        attr = getattr(e,i)
        attr()

java 用反射 python 应该也有类似的方法

狂天 #10 · 2022年03月31日 Author
rhyme 回复


试了一下,这样不行

狂天 #11 · 2022年03月31日 Author
kangaroo 回复

简洁明了,N 币

list = [test1, test2, test3, test4]
for i in list:
i()
一定要字符串么,直接这样不行么?

def test1():
    print(1)

def test2():
    print(2)

function_dict = {
  "test1": test1,
  "test2": test2
}
for function in function_dict.values():
    function()

#或者
function_list = ["test1","test2"]
for function in function_list:
    function_dict[function]()

#又或者
for function in function_list:
    exec(function+'()')

#又或者
for function in function_list:
    eval(function)()

没太明白楼主的真实意图,这样只是拼出来字符串而已

9楼 已删除

反射或者 exec

输出

这意思?

18楼 已删除

把你想要运行的方法又都装在一个方法里 调用这个方法去执行它们😂

我也想知道😳

这怎么执行,run() 是一个 function 对象,你拼接出来的是'run()'是一个字符串,将字符串转换为 function 对象?

楼主的意思是拼接出来的是字符串,然后有对应的方法,然后怎么执行这个方法对吧。可以试试动态引用库,importlib.import_module

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册