我有兩個文件從第三個文件導入相同的對象跟蹤方法。它的工作原理是這樣的Maya Python:由於重新加載而導致的未綁定方法()
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。 init。如果我使用這兩個文件並且碰巧重載()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上被重新加載。無論哪個是最後得到重新加載的作品,並且以前重新加載的都會被解除綁定。
請注意,我需要重新加載這些腳本來測試我的更改。我知道一旦重新加載出現,他們將不再被解除綁定,但我需要在工作時看到我的更改。
我該怎麼辦?
我意識到這個問題與我以前的一個非綁定方法問題非常相似,但超級解決方案與前一個例子不一致,我想知道爲什麼現在。我已經將問題縮小到使用重新加載。我想問的是,是否有一種巧妙的方式來重新加載腳本,以便它不會破壞使用相同源文件的其他文件。 –