我习惯了指针和参考,但我需要澄清一点:
我的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()
是否传递了对象的新副本?你能解释一下吗?
(在此示例中,图表只包含节点列表,节点实际上是包含详细信息的字典。)
答案 0 :(得分:5)
名称newNode
超出范围,但它所引用的对象不会被销毁。您通过将该对象附加到nodeList
添加了对该对象的另一个引用。 append
不会复制,但会创建对同一对象的单独引用。当名称结束时,名称超出范围,但对象仅在所有引用消失时被垃圾收集。