构建节点链?

Building Chain of Nodes?

我有一个节点 class。然后我正在构建一个节点链。 它们通过 self.prev_node 和 self.next_nodes 相互连接, Chain : self.last 也将 link 保存到链的最后一个元素。 我正在使用这样的方法添加一个新节点:

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:3, Node:4]

应该是:

c.start.next_nodes
[Node:2]


c.start.next_nodes[0].next_nodes
[Node:3]

出于某种原因,next_nodes 列表似乎是 duplicate/the-same。

我做错了什么?

您在 init 中将可变“[]”作为参数传递。

所以你创建的每个节点都指的是相同的内存位置,因此以所有相同的“next_nodes”结束。