如果您可以提供帮助,我们将不胜感激。 以下代码输出“ 7”。 为什么对对象“ a”的引用未更改为item = 9的Node?谢谢。
class Node:
def __init__(self,item):
self.item = item
def change(self):
current = Node(9)
self = current
a = Node(7)
a.change()
print(a.item)
答案 0 :(得分:0)
self = current
仅将名称self
更改为引用名称为current
引用的对象。不会更改名称为Node(7)
的已实例化的类a
,即名称a
仍引用相同的对象Node(7)
。
不过,您可以返回current
对象并将其设置为名称a
:
In [212]: class Node:
...: def __init__(self,item):
...: self.item = item
...: def change(self):
...: current = Node(9)
...: return current
In [213]: a = Node(7)
...: a = a.change()
...: print(a.item)
9
但是这仅仅是名称绑定(您可以将名称a
绑定到所需的任何对象)。