我有两个文件从第三个文件导入相同的对象跟踪方法。它是这样工作的
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.跟踪器.初始化。如果我同时使用这两个文件,并且碰巧重载()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)
…取决于哪个会被重新加载。以最后一个得到重新加载的作品为准,而之前重新加载的作品则被解除绑定。你知道吗
请注意,我需要重新加载这些脚本来测试我的更改。我知道一旦重新加载完成,它们将不再被解除绑定,但我需要在工作时看到我的更改。你知道吗
我该怎么办?你知道吗
您可能希望从子模块中删除重新加载,并按照文件中的依赖项所暗示的逻辑顺序重新加载它们:
对于这样一个小案例来说,它是可行的,但如果事情变得更复杂,它将很难管理。你知道吗
您可以尝试两次导入TrackingMethods,使用两个名称。你知道吗
形状:
在着色器中:
只要外部没有人尝试检查着色器或形状对象是否是跟踪器的实例,这应该是可行的-它将失败。你知道吗
相关问题 更多 >
编程相关推荐