我试图创建一个类的实例来测试我创建的模块是否正常工作。
这是模块(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的错误。有人可以帮忙吗?
答案 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.')