0

そのため、mayaでPython APIを使用するようになり、一部のツールでは、さまざまなオブジェクトに対してコードを反復処理する必要があります。これには、その名前のオブジェクト参照をオブジェクト作成者の出力に添付し、呼び出された直後に関数を実行する必要があります。

実行するのではなく(架空の例):

className.myObject1 = mayaClass.create(myObject1)
func1()
func2()

className.myObject2 = mayaClass.create(myObject2)
func1()
func2()

等..

私がこれを行うと言うことができる方法はありますか?

myObjs = ['myObject1','myObject2','myObject3']
for obj in myObjs:
    className.obj = mayaClass.create(obj)
    func1()
    func2()

それは確かに多くのタイピングを節約し、スクリプトサイズを縮小し、物事をより簡単に保守できるようにします。

4

3 に答える 3

2

setattr()

オブジェクトで許可されている場合、関数は属性に値を割り当てます。たとえば、setattr(x, 'foobar', 123)はと同等x.foobar = 123です。

于 2012-05-03T03:30:20.940 に答える
1

setattr()オブジェクトの属性(文字列で指定)を指定された値
vars()に設定し、ローカル変数を辞書として取得します

Pythonの重要な組み込みについては、http://docs.python.org/library/functions.htmlをご覧ください

myObjs = ['myObject1','myObject2','myObject3']

for obj in myObjs:
    setattr(className, obj, mayaClass.create(vars()[objs]))
    func1()
    func2()

編集:私はまた別の答えが言及していることに気づきましたexec。Pythonコードでこれを使用するときは注意してください。

于 2012-05-03T04:02:05.280 に答える
0

イグナシオの回答に加えて、この声明setattr()を使用する可能性についても言及したいと思います。exec()これにより、現在のスコープでPythonコードとして文字列を実行できます。

于 2012-05-03T03:38:46.867 に答える