dictionary - 是否可以在 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}
解决方案
是的,你可以,但不是这样。
这里发生了什么,是这样的:
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 对象是不可变的。
推荐阅读
- firebase - 使用颤振将入口地图发布到 Firestore
- amazon-web-services - 通过 eksctl 启用功能门 EKS
- android - 在 ConstraintLayout 中,如何对齐第 2 行的基线?
- android-jetpack-compose - 预览版不支持创建 ViewModel
- spring-boot - 将 JHipster 单片应用程序部署到 Heroku 时,“BeanDefinitionStoreException:无法处理配置类的导入候选”
- python - 如何使用python中的报告实验室将包装文本与非包装文本对齐在同一行
- pandas - 网格中的 barplot 确实适用于 2 个以上的图
- windows - windows远程访问如何在没有互联网的情况下工作?
- python - Django 3.1.3 版表单未保存到模型
- javascript - socket.io 在向控制台发送“Hello World”时面临的问题