无法在Python

时间:2015-08-30 18:01:59

标签: attributes

我试图创建一个类的实例来测试我创建的模块是否正常工作。

这是模块(fileWriter.py),错误似乎在 init 方法中:

class File(object):
'''process the data from a file'''

#fields
#fileName = name of file
#textData = data read from/written to file

#Constructor
def __init__(self, fileName = 'saved_data.txt', textData = ''):
    #Attributes
    self.fileName = fileName
    self.textData = textData

#Properties
@property #getter
def fileName(self):
    return self.__fileName

@fileName.setter #setter
def fileName(self, value):
    self.__fileName = value

@property #getter
def textData(self, value):
    self.__textData = value

#Methods
def saveData(self):
    '''appends data to file'''
    try:
        fileObj = open(self.fileName, 'a')
        fileObj.write(self.textData)
        fileObj.close()
    except Exception as e:
        print('You have the following error: ' + str(e))
    return('Data successfully saved to file.')

def toString(self):
    '''returns text data explicitly'''
    return self.fileName + ':' + self.textData

def __str__(self):
    '''returns text data implicitly'''
    return self.toString()

为了测试课程,我编写了以下测试工具:

    import fileWriter

    import fileWriter

#test harness
processorObj = fileWriter.File()
processorObj.fileName = 'test.txt'
processorObj.textData = 'testing, 1, 2, 3...'
strMessage = processorObj.saveData()
print(strMessage)

if __name__ == '__main__':
    raise Exception('Don\'t run a module by itself!')

当我运行测试文件时,我收到错误:

文件" testFileWriter.py",第4行,in     processorObj = fileWriter.File()   文件" /Users/Haruka/Documents/python_class/Employees/fileWriter.py",第19行, init     self.textData = textData AttributeError:无法设置属性

我无法弄清楚self.textData = textData的错误。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

我不确定你是否在粘贴后格式化了代码,但是有一些拼写错误:

def __init__(self, fileName = 'saved_data.txt', textData = ''):
    #Attributes
    self.__fileName = fileName
    self.__textData = textData

@property #getter
def textData(self):
    return self.__textData

稍后在测试中,您还尝试在示例中设置textData属性而不使用setter。您可以添加到您的班级:

@textData.setter
def textData(self, value):
    self.__textData = value

执行某些文件io的更多pythonic方法是使用上下文。

def saveData(self):
    '''appends data to file'''

    with open(self.fileName, 'a') as f:
        f.write(self.textData)
    return('Data successfully saved to file.')