3
這是我想做些什麼,但不知道是否有一種方法可以做到這一點:在循環中調用列表中的每個方法?
methods = [__add__, __sub__, __mul__]
a = 3
b = 4
for m in methods:
print a.m(b)
結果應該是:
7
-1
12
我將如何做到這一點對於任何規模的名單,這在Python中稱爲什麼?
這是我想做些什麼,但不知道是否有一種方法可以做到這一點:在循環中調用列表中的每個方法?
methods = [__add__, __sub__, __mul__]
a = 3
b = 4
for m in methods:
print a.m(b)
結果應該是:
7
-1
12
我將如何做到這一點對於任何規模的名單,這在Python中稱爲什麼?
做你想要做有什麼,你需要使用getattr
:
methods = ['__add__', '__sub__', '__mul__']
a = 3
b = 4
for m in methods:
print getattr(a, m)(b)
但是,至少這個特殊的例子,這是更好地做到這一點:
from operator import add, mul, sub
ops = [add, sub, mul]
a = 3
b = 4
for op in ops:
print op(a, b)
您可以使用getattr
通過名稱調用方法:
methods = ['__add__', '__sub__', '__mul__']
a = 3
b = 4
for m in methods:
print getattr(a, m)(b)