python浅拷贝copy.copy()与深拷贝copy.deepcopy()

import copy#导入copy模块
class MobilePhone:#定义MobilePhone类。解释器执行 class 语句,创建一个类名为MobilePhone的对象。
    def __init__(self,cpu,screen):#定义构造函数__init__()方法,用来初始化实例对象的实例属性
        self.cpu=cpu#实例(instance)属性,属于实例对象
        self.screen=screen
class CPU:#定义CPU类
    def calculate(self):#实例方法,方法调用时,通过对象来调用。
        print('计算666')
        print('CPU对象:',self)
class SCREEN:#定义SCREEN类
    def show(self):
        print('显示画面,闪闪亮')
        print('屏幕对象' ,self)
c=CPU()#创建CPU的实例对象c
s=SCREEN()#创建SCREEN的实例对象s
m=MobilePhone(c,s)
#m是MobilePhone类的实例对象,自动调用构造函数__init__()方法,将c和s两个对象赋值给MobilePhone中的cpu和screen属性。
# 如果没有m,MobilePhone、CPU、SCREEN三个类就是独立的。

print(m,m.cpu,m.screen)
m.cpu.calculate()
m.screen.show()

print('1.测试变量赋值:')#两者ID一样(给变量进行赋值,都指向对象的ID)
n1=m
print(n1,n1.cpu,n1.screen)
n1.cpu.calculate()
n1.screen.show()

print('2.测试浅复制:')#拷贝最外层时,开辟新的内存,建立新的外层ID;拷贝内层时,不会开辟内存,仍指向原来内存值的ID,跟随原来内存值的变化发生变化。Python拷贝一般都是浅拷贝。
n2=copy.copy(m)
print(n2,n2.cpu,n2.screen)
n2.cpu.calculate()
n2.screen.show()

print('3.测试深复制:')#拷贝时,递归拷贝对象中包含的子对象,最外层和内层都开辟新的内存,建立新的内外层ID,不受原来内存值变化的影响。
n3=copy.deepcopy(m)
print(n3,n3.cpu,n3.screen)
n3.cpu.calculate()
n3.screen.show()

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值