我有两个文件从第三个文件导入相同的对象跟踪方法。它的工作原理是这样的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上被重新加载。无论哪个是最后得到重新加载的作品,并且以前重新加载的都会被解除绑定。
请注意,我需要重新加载这些脚本来测试我的更改。我知道一旦重新加载出现,他们将不再被解除绑定,但我需要在工作时看到我的更改。
我该怎么办?
我意识到这个问题与我以前的一个非绑定方法问题非常相似,但超级解决方案与前一个例子不一致,我想知道为什么现在。我已经将问题缩小到使用重新加载。我想问的是,是否有一种巧妙的方式来重新加载脚本,以便它不会破坏使用相同源文件的其他文件。 –