通过类方法名调用类方法

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

 

posted @ 2020-09-24 14:56  素老奸  阅读(1338)  评论(0编辑  收藏  举报