我习惯于使用指针和引用,但是在这一点上我需要澄清一下:
我的Node类中有以下方法:
def createNewNode(graph):
#Create New Node Dictionary
newNode = {}
# Fill in Details for that Node
newNode['NAME'] = 'Max'
newNode['AGE'] = 22
newNode['ID'] = 'DC1234SH987'
#Add the Node to the Graph
graph.addNode(newNode)
创建的newNode
的范围在函数createNewNode()
中。现在,将此节点添加到Graph类中的节点列表中。
Graph类具有以下功能:
def addNode(self, node):
self.nodeList.append(node)
现在,Graph类函数addNode()
只是将节点追加到图类中的节点列表中。在节点类中调用graph.addNode()
之后,newNode
变量的作用域何时停止存在?
现在添加到Graph类列表中的数据现在是否无效?append()
是否为传递的对象制作新副本?你能跟我解释一下吗?
(在此示例中,图仅包含节点列表,而该节点实际上是具有详细信息的字典。)
python大神给出的解决方案
名称newNode
超出范围,但它所引用的对象没有被破坏。通过将对象附加到nodeList
,添加了对该对象的另一个引用。 append
不会复制,但是会创建对同一对象的单独引用。名称在功能结束时会超出范围,但是仅当对对象的所有引用都消失时才对对象进行垃圾回收。