我正在将二进制文件读入类实例列表.我有一个循环,可将文件中的数据读取到实例中.实例填充完毕后,我将实例附加到列表中并再次开始阅读.
除实例的元素之一是Rect(即矩形)(一种用户定义的类型)外,此方法均能正常工作.即使使用Deepcopy,属性也会被覆盖.
有一些变通办法,例如不让Rect是用户定义的类型.但是,我看到这种情况会遇到很多,并希望有一个简单的解决方案可以让我在循环中读取嵌套类型.
这是一些代码:
class Rect:
def __init__(self):
self.L = 0
class groundtruthfile:
def __init__(self):
self.rect = Rect
self.ht = int
self.wt = int
self.text = ''
...
data = []
g = groundtruthfile()
f = open("datafile.dtf", "rb")
length = unpack('i', f.read(4))
for i in range(1,length[0]+1): #length is a tuple
g.rect.L = unpack('i',f.read(4))[0]
...
data.append(copy.deepcopy(g))
除了所有data(i).rect.L是最后读取的数据的值之外,此结果正是我想要的.