2015-04-19 40 views
0

我将如何做到以下几点:怎么办GETATTR与方法

instance.method() 

我知道我可以做getattr(instance, method)得到instance.method,但有一个内建的实际运行的方法是什么?

回答

5

只要做到getattr(instance, method)()getattr返回方法对象,您可以使用()与其他可调用方法一样调用该方法对象。

3

所有你需要做的就是添加一个()到最后:

getattr(instance,method)() 
1

您可以使用operator.methodcaller创建将执行时对通过实例运行方法的功能。但是你仍然需要在一个实例上实际调用它。

from operator import methodcaller 

call_hello = methodcaller('hello', 'Jack') 

call_hello(something) # same as something.hello('Jack') 

当你想在不同的实例上调用同样的方法时,这对你不知道名称是很有用的。