构建节点链?
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”结束。
我有一个节点 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”结束。