为什么不能只分配自指针?

时间:2019-07-27 18:58:52

标签: python self

如果您可以提供帮助,我们将不胜感激。 以下代码输出“ 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)

1 个答案:

答案 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绑定到所需的任何对象)。