Class未更新的空列表的初始化



我有一个由4个deque组成的列表,具有设置的长度。我做了这个列表,希望它会像其他的一样更新。下面是一个简单的例子:

class foo():
def __init__(self):
self.buffer_size = 300
self.a = collections.deque([0]*self.buffer_size, self.buffer_size
self.b = collections.deque([0]*self.buffer_size, self.buffer_size
self.c = collections.deque([0]*self.buffer_size, self.buffer_size
self.d = collections.deque([0]*self.buffer_size, self.buffer_size
self.buffers = [list(self.a), list(self.b), list(self.c), list(self.d)]
def do_something(self):
## here I append to these deques so that the values in them changes
for i in range(20):
self.a.append(i)
self.b.append(i)

def _buffers(self):
## buffers will still be all zeros
print(self.buffers)

F = foo()
F.do_something()
F._buffers()

我的问题是为什么它仍然只是0?为什么当它内部的deque被改变时它不更新?如何实现这一目标?

原来问题是我在self.buffers的初始化中将deque转换为列表。我怀疑发生这种情况的原因是,当列表被创建时,它指向内存中完全不同的位置,不再受更改的影响。

相关内容

  • 没有找到相关文章

最新更新