无法将类中的值用于另一个类

时间:2014-11-07 03:26:46

标签: python class class-variables

我试图从类中获取值并将该特定值用于另一个类。但是我一直收到此错误 - AttributeError: 'CustomNodeTranslator' object has no attribute 'start'

基本上我正在尝试获取/转移要用于self.start类的self.endChanFileExporter的值

我不确定为什么它不起作用但是当我在代码的另一部分中应用这个类似的方法时,它工作正常。

非常感谢任何建议!

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 个答案:

答案 0 :(得分:1)

第一次在start end方法中看到CustomNodeTranslatorwriter()

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

__init__()之外添加属性是不好的做法。它之所以失败的原因是因为你指的是尚不存在的属性,因为它们仅在 之后被调用writer()