3つ目のファイルから同じオブジェクトトラッキングメソッドをインポートする2つのファイルがあります。これはこのようなものですMaya Python:Reload()によるアンバインドメソッド
file TrackingMethod
class Tracker(object):
def __init__(self,nodeName=None,dag=None,obj=None):
#Does some open maya stuff to get the dag path
def fullpath(self):
return dag.fullpath()
file Shapes #classes that create objects with shape nodes
import TrackingMethod as trm
reload(trm)
class circle(trm.Tracker):
def __init__(self,nodeName=None,dag=None,obj-None):
#does some shape related stuff then inits tracker
trm.Tracker.__init__(self,nodeName=nodeName,dag=dag,obj=obj)
file ShaderNodes #Classes that create shading nodes
import TrackingMethod as trm
reload(trm)
class shaderThingy(trm.Tracker):
def __init__(self,nodeName=None,dag=None,obj-None):
#does some shader related stuff then inits tracker
trm.Tracker.__init__(self,nodeName=nodeName,dag=dag,obj=obj)
ここに問題があります。エラーはtrm.Trackerで発生します。 初期。私が両方のファイルを使用していて、ShaderNodeまたはShapesのいずれかを再読み込みすると、もう一方のメソッドは元のTrackingMethodクラスのサブクラスであると認識されなくなります。他のクラスを再ロードすることによって、それは後方参照です失い、私はどちらかを取得:
>>unbound method __init__() must be called with Tracker instance as first argument (got circle instance instead)
または
>>unbound method __init__() must be called with Tracker instance as first argument (got ShaderThingy instance instead)
リロードしますどの..depending。リロードされた作品を最後に取得したものと、以前にリロードされたものはアンバウンドします。
あなたの変更をテストするには、これらのスクリプトをリロードする必要があります。私はリロードがそこから外に出れば、彼らはもはやアンバウンドされないことを知っていますが、私は仕事の中で私の変更を見なければなりません。
私は何をしますか?
私は以前のアンバウンドメソッドの質問に非常に似ていますが、スーパーソリューションは以前の例と一貫して動作しませんでした。私はリロードの使用に問題を絞り込んだ。問題は、同じソースファイルを使用する他のファイルを破壊しないように、スクリプトをリロードするスマートな方法があるかどうかということです。 –