0

これはコードの内容とはまったく関係ないように思われるので、一般的なものにしておきます。

モジュールの 1 つの下部にある最後のクラスに複数行の docstring を追加していました。これは、物事にラベルを追加するものです。Maya のスクリプト エディタを介してモジュールをインポートし、そのクラスでヘルプ(module.Class)を実行すると、このエラーを受け取りました:

# Error: IndexError: file C:\Program Files\Autodesk\Maya2012\bin\python26.zip\inspect.py line 568: list index out of range # 

複数行の文字列がエラーの原因となっているものを絞り込み、1行または2行で作業するように切り詰めましたが、それ以上は失敗しました。大きな複数行のコメントを別のクラスに移動してヘルプを試みたところ、問題なく機能したため、コメントは問題ではないようでした。次に、モジュールの新しい最後のクラスでヘルプを実行しましたが、失敗しました。終盤に近い位置が問題だったようです。

コメントを失敗したクラスに戻し、そのコードをすべて削除して help() を実行したところ、問題なく動作しました。メソッドを追加し直したところ、コードが 1 行しかない最後のメソッドまで機能しました。私はそのすべての部分を変更しました - 名前を変更し、引数を削除し、コードの 1 行をパスに交換しました - クラスのヘルプは、完全に削除するまで常に失敗しました。ヘルプは module.Class.method で機能したため、メソッド自体とその大きな複数行のコメントは問題ないように見えました。

次に、モジュール ファイル内のクラス全体をその直前のクラスの前に移動しました。ヘルプが機能するようになりました。ただし、ファイルの最後のクラスのヘルプは失敗しましたが、docstring さえありません。クラスを一番下に戻し、最後にあるもので遊んでみました。最後の方法には問題があるようでした。つまり、それらの前に多くのテキストを削除したとしても、最後の 1 つだけを削除するよりも多くのテキストを削除しても、まだ問題が発生します。最後のメソッドに docstring を追加するとヘルプが失敗しましたが、最後の 3 つのメソッドに docstring (単なる「なんでも」) を追加すると、再び機能するようになりました。このすべてが完全に不可解です。

これは、私が何らかの形で見逃した既知の問題ですか? 一部のクラス/メソッド構成は、すべてのメソッド (特に、軽く複雑なもの以上) に docstring がない限り、ヘルプを強制終了する可能性があるようです。

例として小さなコードを追加するための編集:

def setLabelChangeDGC (self, control):
    control.dragCallback = self.getLabelChangeDGC(control)

これは、ファイル内の最終クラスの最終メソッドでした。ヘルプがクラッシュする原因になりました。このメソッドを削除すると、ヘルプが再びクラスで作業できるようになります。ただし、これを残してクラス自体を前のクラスの上に移動すると、このクラスでは再び正常に機能しますが、ファイル内の新しい最終クラスでは失敗し始めます。

4

1 に答える 1

0

マヤモジュールをインポートすると

import maya.cmds as cmds # or
import maya.mel as mel

各インポートの最後に、cmdまたはmelパーツとして配置する必要があることを確認してください

それからあなたは言うことができます

cmds.sphere()

mayaは独自のヘルプ関数も定義しています!!! ヘルプ()

そうしないと、Pythonでmayaによって定義されたメソッドの一部を混合/オーバーライドすることになります。これが、奇妙な結果が得られる理由でもある可能性があります。

オブジェクトがインスタンス化されるとき、オブジェクト指向コードでの配置とは無関係であるため、モジュール内のどこかにクラスを移動しても違いはないと思います。

于 2012-10-22T12:06:35.643 に答える