2014-11-07 5 views
0

Я пытаюсь захватить значения из класса и использовать это конкретное значение в другом классе. Однако я получаю эту ошибку - AttributeError: 'CustomNodeTranslator' object has no attribute 'start'Невозможно использовать значения из класса в другой класс

В основном я пытаюсь получить/передать значения из self.start и self.end, которые будут использоваться в ChanFileExporter класса

Я точно не знаю, почему он не работает, но когда я применил этот аналогичный метод в другой части кода, он работает нормально.

Любые советы приветствуются!

class CustomNodeTranslator(OpenMayaMPx.MPxFileTranslator): 
    def __init__(self): 
     OpenMayaMPx.MPxFileTranslator.__init__(self) 
    def haveWriteMethod(self): 
     return True 
    def haveReadMethod(self): 
     return True 
    def filter(self): 
     return "*.chan" 
    def defaultExtension(self): 
     return "chan" 
    def writer(self, fileObject, optionString, accessMode): 
     self.start = [] 
     self.end = [] 

     for opt in filter(None, optionString.split(';')): 
      optSplit = opt.split('=') 

      if optSplit[1] == '0': 
       startAnimation = cmds.findKeyframe(which='first') 
       endAnimation = cmds.findKeyframe(which='last') 
       self.start = startAnimation 
       self.end = endAnimation 

class ChanFileExporter(): 
    def __init__(self, transform, startAnimation, endAnimation, cameraObj): 
     self.fileExport = [] 
     testClass = CustomNodeTranslator() 

     mayaGlobal = OpenMaya.MGlobal() 
     mayaGlobal.viewFrame(OpenMaya.MTime(1)) 

     startAnimation = testClass.start 
     endAnimation = testClass.end 


     for i in range(int(startAnimation), int(endAnimation + 1)): 
      ... 
      ... 

ответ

1

Первый раз, когда вы видите start или end в CustomNodeTranslator находится в методе writer().

self.start = [] 
    self.end = [] 

Неплохая практика заключается в добавлении атрибутов за пределы __init__(); и причина, по которой он терпит неудачу для вас, заключается в том, что вы ссылаетесь на атрибуты, которые еще не существуют, поскольку они созданы только после вы вызываете writer().

+0

Мне удалось найти решение этой проблемы, и она отлично работает (наконец, после того, как я уже делал тот же код в течение некоторого времени) !! Благодаря! – dissidia