我們都知道 ,python可以通過 eval和exec等執行簡單或者復雜的字符串類型的python語句.但是這種方式對於類方法會失效.
還有兩種其他方式可以
例如:
class A():
def add(self, x, y):
c = x + y
print('{}+{}={}'.format(x, y, c))
def bb(self):
print('do other something!')
當我們獲取 A的實例之后:
a = A()
1,第一種方式,通過反射,利用getattr獲取到方法並調用,可以通過定義一個統一的外部方法完成這個功能,如下:
def func_add(obj,funcname='',*args): # 通過反射進行取方法 func = getattr(obj, funcname, None) if func: return func(*args) if __name__ == '__main__': a = A() func_add(a, 'aa',2,3)
第二種方式,operator中methodcaller方法進行調用
from operator import methodcaller
if __name__ == '__main__':
a = A() methodcaller('aa',2,3)(a)
