如何解决对象与引用
我试图理解引用和对象之间的区别。如果我使用的术语不正确,请告诉我。
考虑以下代码:
page1>404page>page2
还要考虑以下代码:
# SCENARIO 1
a = 1
b = a
a = 3
b # still 1,no surprises there
我已经看到了很多措辞相似的问题,但是我仍然无法理解是什么使方案1和2有所不同,因此在方案2中,我们可以通过操纵其引用来更新# SCENARIO 2
class Node:
def __init__(self,link,value):
self.link = link
self.value = value
sll = Node(Node(None,1),2)
current = sll
current = current.link
current.value = 3
sll.link.value # updated to 3!
,但是我们不能做同样的事情在方案1中。
解决方法
两个代码本质上是不同的。在方案1中,您只做作业。与Node
相同(下面我改用简单的list
):
# SCENARIO 1
a = 1
b = a
a = 3
b # still 1,no surprises there
# SCENARIO 1
a = [1]
b = a
a = [3]
b # still [1],no surprises there
真的没关系,在这里使用什么。
# SCENARIO 2
sll = [1,2]
current = sll
current[0] = 3
sll[0] # updated to 3!
这是因为sll
和current
是相同的对象。名称不同,但对象相同,在内存中的位置相同。
您无法使用int
和类似的方法执行方案2,因为int
(和类似的类型)是不可变的,并且您无法执行类似a[0]=...
,a.value=...
的任何操作无法对其进行突变。您可以更改list
(或OP中的Node
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。