python - 将一种引用类型复制到另一种的效果
问题描述
我有两个类如下:
class foo:
def __init__(self):
self.val = 10
class foo2:
def __init__(self):
self.val = 1000
当我将类 foo 的实例复制到变量中,然后更改类 foo 的值时,变量会发生变化。这是因为 foo 是一种引用类型,并且 foo 中的每次更改也会更改其实例。
f = foo()
b = f
print(b.val)
f.val = 20
print(b.val)
>> 10
>> 20
但是如果我将类foo2复制到类foo中,变量b不会更改为 1000。对此有何解释?
f = foo2()
print(f.val)
print(b.val)
>> 1000
>> 20
解决方案
就是这一行:
b = f
您尚未创建对象的副本,而是创建了f
对同一f
对象的两个不同引用。对其中任何一个的更改都会同时更改两者,因为它们是同一个对象。
推荐阅读
- python - Python - pandas - 具有皮秒精度的时间序列数据
- angular - 错误:模板解析错误:'app-header' 不是已知元素:
- r - 为什么重命名的函数不像 R 中的原始函数那样工作
- xcode - xcrun:错误:无法在 SDK 'macosx' 中查找项目 'Path'
- amazon-web-services - AWS API Gateway 方法请求路径参数不起作用
- javascript - 找出从脚本中加载 JS 脚本的基本 URL
- perl - 使用 Net::Stomp::Client 发送二进制消息
- excel - 在 VBA 中的单击 Subs 之间传递数组
- reactjs - 从卡片循环中获取模式窗口 - React
- sql-server - 在 FORMATMESSAGE 中用零填充变量