我在使用 Python 时遇到了麻烦。我有一个列表,其中包含一个类的七个副本,我打算只更改其中一个的值,但每当我这样做时,它都会更改所有值。
这是类:
class Node:
previous = -1
distFromSrc = 1000000
visited = False
下面是我创建列表的方式:
def createNodeTable(network):
nodeTable = []
for line in network:
nodeTable.append(Node)
return nodeTable
'network' 是一个长度为 7 的列表,因此当我在尝试对值进行任何更改之前打印 'nodeTable[x].visited' 时,我得到的每个值都是 'False'。
如果我调用以下函数,但是所有“.visited”值都变为 false,而不仅仅是我打算更改的值。
无论将“currentNode”更改为什么,我都会遇到同样的问题:
def setVisited(currentNode, nodeTable):
nodeTable[currentNode].visited = True
return nodeTable
setVisited 函数有问题还是 nodeTable 有问题?我什至不知道从哪里开始尝试解决这个问题。
最佳答案
nodeTable.append(Node)
问题出在那一行。您在那里所做的是将类型(或类)附加到列表中。因此,您最终得到了一个七倍于完全相同类型引用的列表。
您应该做的是创建所述类型的实例。您可以通过调用它来做到这一点。
nodeTable.append(Node())
关于Python 类列表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365906/