对象的浅拷贝和深拷贝

  • 简要介绍
    • 代码实现

简要介绍

浅拷贝:python拷贝一般都是浅拷贝。拷贝时,对象包含的子对象内容不拷贝。因此,源对象和拷贝对象引用同一个对象
深拷贝:使用copy模块的deepcopy函数,递归拷贝对象中包含的子对象。源对象和拷贝对象所有的子对象也不同
变量的数值操作:只是形成两个变量,实际上时指向同一个对象

代码实现

// #测试浅拷贝和深拷贝
import copyclass MobilePhone:def __init__(self,cpu,screen):self.cpu=cpuself.screem=screenclass CPU:def calculate(self):print("算你个12345")print("cpu对象:",self)
class Screen:def show(self):print("显示一个好看的画面,亮瞎你的眼")print("screen对象",self)
#测试变量的赋值
c1=CPU()
c2=c1
print(c1)
print(c2)#测试浅拷贝
s1=Screen()
m1=MobilePhone(c1,s1)
m2=copy.copy(m1)print(m1,m1.cpu,m1.screem)
print(m2,m2.cpu,m2.screem)
#测试深复制
m3=copy.deepcopy(m1)
print(m1,m1.cpu,m1.screem)
print(m3,m3.cpu,m3.screem)

变量赋值操作结果:

浅拷贝结果:
深拷贝结果

对象的浅拷贝和深拷贝相关推荐

  1. 拷贝Python对象、浅拷贝、深拷贝

    浅拷贝和深拷贝在C++中出现和使用的较多,python也有相应的用法. test1 = ['a','c','b','d','f'] print id(test1) test2 = test1 prin ...

  2. python中不可变对象_Python中的可变对象与不可变对象、浅拷贝与深拷贝

    Python中的对象分为可变与不可变,有必要了解一下,这会影响到python对象的赋值与拷贝.而拷贝也有深浅之别. 不可变对象 简单说就是某个对象存放在内存中,这块内存中的值是不能改变的,变量指向这块 ...

  3. Python —对象的浅拷贝和深拷贝

    变量的赋值操作 只是形成两个变量,实际还是指向同一个对象. 浅拷贝 Python 拷贝一般都是浅拷贝(copy.copy).拷贝时,对象包含的子对象内容不拷贝.因此,源对象和拷贝对象会引用同一个子对象 ...

  4. python—类和对象之浅拷贝和深拷贝详细讲解

    一.变量的赋值操作 定义:只是形成2个变量,实际上还是指向同一个对象 代码如下: 内存示意图: 将创建CPU类的实例对象赋值给cpu1进行储存,所以cpu1的id为0212, 然后将cpu1赋值给cp ...

  5. Python对象的浅拷贝与深拷贝

    在讲我们深浅拷贝之前,我们需要先区分一下拷贝和赋值的概念.看下面的例子 a = [1,2,3] 赋值: b = a 拷贝: b = a.copy() 上面的两行代码究竟有什么不同呢?带着这个问题,继续 ...

  6. 【Python基础】对象的浅拷贝与深拷贝

    Python的赋值操作一般都是存储对象的引用,而不是对象的拷贝.因为如果直接对对象进行拷贝,那么运行将会比较缓慢,而且我们实际开发大部分场景都是希望引用对象而不是拷贝对象.当然了,如果你明确要求拷贝, ...

  7. Python 零基础入门到实战(一)笔记:内置对象、浅拷贝、深拷贝、计算圆面积、凯撒密码、英文大小写转换、输入国家打印出国家名和首都、输入数字英文输出、统计句子中的字母数量、猜随机数

    Python入门到实战(一) 为什么写这篇文章 Part 1 入门部分 什么是编程语言? Python的优势 目前应用 特点 Part 2 6种内置对象 1 整数.浮点数 2 字符串 3 列表 4 元 ...

  8. 【JS专栏】JS对象的浅拷贝与深拷贝

    浅拷贝 自己创建一个新的对象,来接受你要重新复制或引用的对象值.如果对象属性是基本的数据类型,复制的就是基本类型的值给新对象:但如果属性是引用数据类型,复制的就是内存中的地址,如果其中一个对象改变了这 ...

  9. python 实例对象 浅拷贝_Python对象中的浅拷贝和深拷贝

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. Python中的赋值语句不会创建对象的副本,而只是给对象绑定了新的名称.对于不可变对象,这通常没什么区别. ...

最新文章

  1. 爱了!安利一个相见恨晚的可视化学习网站
  2. 2021_Nov_9_Supervision_STEMM_What_You_Need_In_Advance?
  3. 计算机网络学习--交换机和路由器转发数据原理
  4. 使用 Go 实现生产者和消费者,Kafka 正式升级到 3.0!
  5. 程序媛计划——python数据库
  6. 施一公:带好学生,是特别要紧的事
  7. Rational.Rose7.0系统软件
  8. Unity DoTween
  9. Anaconda如何安装PyTorch?
  10. 地摊经济一千年:从《韩熙载夜宴图》到木屋烧烤“撸串”
  11. css less使用
  12. linux系统运行flash3d,在Linux上运行STM32,快来试试!
  13. kali工具熟悉——情报分析
  14. 关于nignx老是报错404的问题
  15. OpenJudge计算概论-鸡尾酒疗法
  16. 配置静态路由的下一跳使用出站接口和下一跳IP的差别
  17. 股票网站数据可视化,成为赌神不再是梦!!!
  18. ASP.NET技巧:GridView控件自定义分页详解第一页
  19. 【二 zedboard】PS和PL之间的交互
  20. web前端渲染和后端渲染(web front-end and back-end rendering)

热门文章

  1. iOS学习之基本概念
  2. Delphi运算符及优先级
  3. ios 内存使用陷阱
  4. 1的恢复出厂设置在哪里_罗斯蒙特变送器怎么恢复出厂设置?
  5. 一年中所有节日的排列顺序_计数问题(二)-排列组合的使用
  6. halcon 图像差分_Halcon编程-基于纹理的mara检测
  7. 隐层元素闪一下_太阳一直依靠什么元素在燃烧,地球上的重元素又是怎么来的?...
  8. 怎么把网页保存到本地计算机,在IE浏览器中,将网页保存到本地计算机中,若只需保存其中的文字、超链接和表格信息,应该选择的保存类型为( )...
  9. java中datetime类型转换,Java中日期格式和其他类型转换详解
  10. arm板telnetd为什么运行不了_一种基于ARM的嵌入式系统开发的方案详细讲解