问题描述
我有一个Node类。然后,我正在构建一个节点链。 它们通过self.prev_node和self.next_nodes相互连接, 还有Chain:self.last拥有到链的最后一个元素的链接。 我正在使用类似的方法来添加新节点:
class Node(object):
def __init__(self,next_nodes=[],prev_node=None):
self.next_nodes = next_nodes
self.prev_node = prev_node
class Chain:
def __init__(self):
self.start = Node()
self.last = self.start
def add_node(self,node):
node.prev_node = self.last
self.last.next_nodes.append(node)
self.last = node
问题是,如果我添加几个节点:
c.start.next_nodes
[Node:2,Node:3,Node:4]
c.start.next_nodes[0].next_nodes
[Node:2,Node:4]
应该是:
c.start.next_nodes
[Node:2]
c.start.next_nodes[0].next_nodes
[Node:3]
由于某种原因,next_nodes列表似乎重复/相同。
我做错了什么?
解决方法
您要在 init 中传递可变的[[]]作为参数。
因此,您创建的每个节点都指向相同的内存位置,因此以所有相同的“ next_nodes”结尾。