我想用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()
我得到了理想的结果。
如何做到这一点?
答案 0 :(得分:9)
方法只是属性,因此请使用getattr()
动态检索一个:
MethodWanted = 'children'
getattr(ObjectToApply, MethodWanted)()
请注意,方法名称为children
,而不是.children()
。不要在这里混淆语法和名称。 getattr()
只返回方法对象,您仍然需要调用它(jusing ()
)。