我有一个Python对象,本质上是其他对象实例的集合。您可以将其他对象附加到它上面(它只是将其存储在列表中)。它是在读取文件时创建的,例如:
def file_reader(file):
obj = MyCollection()
for line in file:
other_obj = line_reader(line)
obj.append(other_obj)
return obj
如果我稍后尝试覆盖对象(通过读取不同的文件),原始数据不会被删除,对象只是被扩展。奇怪的是,如果我使用不同的引用,似乎会发生这种情况:
obj1 = file_reader(file)
obj2 = file_reader(file1)
我怀疑我的代码存在循环引用的问题,但我无法理解其逻辑。有人有想法吗?
编辑: MyCollection 的关键部分如下:
class MyCollection(object):
def __init__(self, objs = []):
self.objs = objs
def append(self, obj):
self.objs.append(obj)
MyCollection()
的代码吗?我猜想这个列表是一个类属性,而不是实例属性。 - jonrsharpe