Python 类列表问题

标签 python list class

我在使用 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/

相关文章:

python 2.7 : cannot pip on windows "bash: pip: command not found"

python - 带集合的列表的不同列表

c# - 在 DataGrid 中显示数据行列表

java - 如何使用java对对象列表进行排序

Java 泛型接口(interface)

java - 如何制作一个 Class< 类型的数组?扩展一些东西>?

Python函数注释: class is not defined in method

python - 如何在 PyGI GTK 中使用 GIO Actions 创建一个完整的菜单?

python - 使用 pytest 测试日志输出

python - 如何在 Python 中创建交互式 3D 图形