在循环中调用列表中的每个方法?

use*_*609 3 python python-2.7

这是我想做的,但不确定是否有办法做到这一点:

methods = [__add__, __sub__, __mul__]

a = 3
b = 4

for m in methods:
    print a.m(b)
Run Code Online (Sandbox Code Playgroud)

结果应该是:

7
-1
12
Run Code Online (Sandbox Code Playgroud)

我如何为任何大小的列表完成此任务,以及在Python中调用的内容是什么?

Cyp*_*ase 5

要完成你想要做的事情,你需要使用getattr:

methods = ['__add__', '__sub__', '__mul__']

a = 3
b = 4

for m in methods:
    print getattr(a, m)(b)
Run Code Online (Sandbox Code Playgroud)

但是,至少对于这个特定的例子,最好这样做:

from operator import add, mul, sub

ops = [add, sub, mul]

a = 3
b = 4

for op in ops:
    print op(a, b)
Run Code Online (Sandbox Code Playgroud)