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

问题描述

我有一个由 4 个具有固定长度的双端队列组成的列表。我制作了这份清单,希望它能像其他清单一样更新。这是一个简单的例子:

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()

我的问题是为什么它仍然只是零?当它里面的双端队列发生变化时,它为什么不更新?关于如何实现这一目标的想法?

解决方法

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