2015-04-19 68 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') 

當你想在不同的實例上調用同樣的方法時,這對你不知道名稱是很有用的。