好吧,这里是这样的:我创建了一个自定义类,当我逐行遍历文件的内容时,我创建了一个在列数据中存储多个字段的自定义类。我希望每次重用一个对象,一次一个地将项添加到它的字段中,然后在运行将所有字段重置为空字符串的方法之前将此对象添加到列表中。我将向您展示我的代码的简化版本。在
class MyClass:
firstName = ""
middleName = ""
lastName = ""
def clearAllFields(self):
self.firstName = ""
self.middleName = ""
self.lastName = ""
myClassImpl = MyClass()
nameData = []
for current in open('nameList.csv','r'):
current = current.split(',')
myClassImpl.firstName = current[0]
myClassImpl.middleName = current[1]
myClassImpl.laststName = current[2]
nameData.append(myClassImpl)
myClassImpl.clearAllFields()
for item in nameData:
print item.firstName
问题是,这个代码的输出是列表中最后一个人的名字,对于文件中的每一行重复一次。我做错什么了?在
您不能重复使用这样的实例;您正在一次又一次地修改同一对象。
nameData.append(myClassImpl)
向列表添加一个引用,而不是一个副本。最后,您有一个引用列表,所有引用都指向同一个副本,它只会显示您最后所做的更改。在而是为每行创建一个新实例:
或者使用^{} class 。在
更好的方法是使用^{} module 读取CSV数据,而不是自己解析它:
^{pr2}$相关问题 更多 >
编程相关推荐