我想动态地调用对象方法。
变量“ 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()
如何动态地做到这一点?
方法只是属性,因此使用getattr()
动态检索一个:
MethodWanted = 'children'
getattr(ObjectToApply, MethodWanted)()
注意,方法名称是children
,而不是.children()
。不要在这里将语法与名称混淆。 getattr()
仅返回方法对象,您仍然需要调用它(使用()
)。