Python 类的深拷贝与浅拷贝

本文介绍了Python中变量赋值、浅拷贝和深拷贝的概念。通过实例展示了如何使用`copy`模块的`copy`和`deepcopy`函数。浅拷贝仅复制对象引用,而深拷贝会递归复制对象及其子对象,确保拷贝对象与源对象的子对象不相同。这对于处理包含复杂数据结构的对象时尤其重要。
摘要由CSDN通过智能技术生成

·变量的赋值操作

        ·只是形成两个变量,实际上还是指向同一个对象

·浅拷贝

        ·Python拷贝一般都是浅拷贝,拷贝时,对象包含的子对象内容不拷贝,因此,源对象与拷贝对象会引用同一个子对象

·深拷贝

        ·使用copy模块的deepcopy函数,递归拷贝对象中包含的子对象,源对象和拷贝对象所有的子对象也不相同

class Cpu:
    pass

class Disk:
    pass

class Computer:
    def __init__(self,cpu,disk):
        self.cpu=cpu
        self.disk=disk


#(1)变量的赋值
cpu1=Cpu()
cpu2=cpu1
print(cpu1)#<__main__.Cpu object at 0x02B29970>
print(cpu2)#<__main__.Cpu object at 0x02B29970>
#(2)类的浅拷贝
print('--------------------')

disk=Disk()#创建一个键盘类对象

computer=Computer(cpu1,disk)#创建一个计算机类对象

#浅拷贝
import copy
computer2=copy.copy(computer)
print(computer,computer.cpu,computer.disk)
#<__main__.Computer object at 0x03599D70> <__main__.Cpu object at 0x012D7610> <__main__.Disk object at 0x012D75F0>
print(computer2,computer2.cpu,computer2.disk)
#<__main__.Computer object at 0x03599DB0> <__main__.Cpu object at 0x012D7610> <__main__.Disk object at 0x012D75F0>
#两个对象不同,但其中的cpu和disk对象是相同的

#(3)类的深拷贝
computer3=copy.deepcopy(computer)
print(computer,computer.cpu,computer.disk)
#<__main__.Computer object at 0x02B69D70> <__main__.Cpu object at 0x02A57610> <__main__.Disk object at 0x02A575F0>
print(computer3,computer3.cpu,computer3.disk)
#<__main__.Computer object at 0x02B69ED0> <__main__.Cpu object at 0x02B731D0> <__main__.Disk object at 0x02B767F0>
#深拷贝,子对象不相同了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值