8

オブジェクトメソッドを動的に呼び出したいです。

変数「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()

それを動的に行う方法は?

4

1 に答える 1

21

メソッドは単なる属性であるため、getattr()動的に取得するために使用します。

MethodWanted = 'children'

getattr(ObjectToApply, MethodWanted)()

メソッド名はchildrenではなくであることに注意してください.children()。構文と名前を混同しないでください。getattr()メソッドオブジェクトだけを返しますが、それを呼び出す必要があります( jusing ())。

于 2013-07-18T14:23:52.537 に答える