我们都知道 ,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)