【发布时间】:2010-03-05 18:40:44
【问题描述】:
我有这个代码:
def __parse(self):
for line in self.lines:
r = Record(line)
self.records[len(self.records):] = [r]
print self.records[len(self.records)-1].getValue() # Works fine!
print self.record[0].getValue() # Gives the same as
print self.record[1].getValue() # as
# ... and so on ...
print self.record[len(self.record)-1].getValue()
现在它应该做的是从文本行中制作记录。但是,当我在 for 循环完成后访问这些列表时,所有记录都会为我调用它们的方法提供相同的结果。当我在附加后立即访问 for 循环中的记录时,它是正确的,因此 Record init 不会出错。不,绝对可以肯定我输入的台词不同!有谁知道为什么会这样?帮助将不胜感激!
【问题讨论】:
-
你为什么不直接做 self.records.append(r)?
-
你能告诉我们
Record是如何定义的吗?如果Record将line存储为类属性而不是实例属性,那么这可能可以解释问题。 -
您只检查循环中的最新记录。以前的值呢?