如何在python中动态调用方法?

时间:2013-07-18 14:22:44

标签: variables dynamic python-2.7 methods call

我想用dinamically调用一个对象方法。

变量“MethodWanted”包含我想要执行的方法,变量“ObjectToApply”包含该对象。 到目前为止我的代码是:

MethodWanted=".children()"

print eval(str(ObjectToApply)+MethodWanted)

但是我收到以下错误:

exception executing script
  File "<string>", line 1
    <pos 164243664 childIndex: 6 lvl: 5>.children()
    ^
SyntaxError: invalid syntax

我也试过没有str()包装对象,但后来我得到了“无法使用+与str和对象类型”错误。

如果没有动态,我可以这样做:

ObjectToApply.children()

我得到了理想的结果。

如何做到这一点?

1 个答案:

答案 0 :(得分:9)

方法只是属性,因此请使用getattr()动态检索一个:

MethodWanted = 'children'

getattr(ObjectToApply, MethodWanted)()

请注意,方法名称为children,而不是.children()。不要在这里混淆语法和名称。 getattr()只返回方法对象,您仍然需要调用它(jusing ())。