首页 > 解决方案 > 是否可以在 Python 的字典值中写入对对象的引用?

问题描述

我可以使用字典中的值作为对对象的引用吗?例子:

a = 60
b = 70
dict_a = {'command_1':a,'command_2':b}
print(dict_a)
##{'command_1': 60, 'command_2': 70}

当我们更改“a”时,字典中的下一个更改

b = 50
print(dict_a)
##{'command_1': 60, 'command_2': 50}

标签: dictionaryobjectreference

解决方案


是的,你可以,但不是这样。

这里发生了什么,是这样的:

b = 70 
# b is now reference to anonymous int object with value of 70

dict_a = {'command_1':a,'command_2':b} 
# dict_a['command_2'] now points *to the same int object* as b

b = 50
#b now points to another anonymous int object with value of 50

底线。做的时候

b=X
something=b

我们将 b 和某个东西都指向 X。当我们稍后将 b 更改为指向 Y 时,某些东西仍然指向 X。分配时,请查看先前分配的右侧。

您可以做的一件事是使用一些更智能的对象作为 dict 值,可以通过调用其中的某些方法来更改其内部值。

例如。假设一个扩展 int 的 myint 类:

n=myint(5)
mydict=dict(command_1=n)
n.set_value(8)

这应该可以工作,因为 n 仍然引用与 dict 中的对象相同的对象。

我手头没有 python 文档,也许您也可以使用 int 对象来执行此操作,但我对此表示怀疑,因为 int 对象是不可变的。


推荐阅读