蓝绝

博客园 首页 新随笔 联系 订阅 管理

 

#浅拷贝示意图

 

#深拷贝示意图

 

 

 

 

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

#(1)变量的赋值
cpu1=CPU()
cpu2=cpu1                                        #创建一个类的对象  (cpu)
print(cpu1,id(cpu1))
print(cpu2,id(cpu2))
#(2)类有浅拷贝
print('------------------------------')
disk=Disk()                                      #创建一个硬盘类的对象  (disk)
computer=Computer(cpu1,disk)                     #创建一个计算机类的对象(Computer)

'''#浅拷贝,拷贝后对象computer2的地址与computer地址不同,其他关联对象地址相同cpu,disk'''
import  copy                                     #导入拷贝模块
print(disk)
computer2=copy.copy(computer)                    #浅拷贝对象computer,给computer2
print('浅拷贝源对象信息',computer,computer.cpu,computer.disk)       #输出computer实例对象,内存地址
print('浅拷贝对象信息',computer2,computer2.cpu,computer2.disk)    #输出computer2拷贝computer对象的内存地址
print('----------------------------------------')
'''#深拷贝,拷贝后对象computer2的地址与computer地址不同,同时其他关联对象地址也不同cpu,disk'''
computer3=copy.deepcopy(computer)                ##深拷贝对象computer,给computer3
print('深拷贝源对象信息',computer,computer.cpu,computer.disk)       #输出computer实例对象,内存地址
print('深拷贝对象信息',computer3,computer3.cpu,computer3.disk)    #输出computer3深拷贝computer对象的内存地址
E:\PycharmProjects\pythonProject\venv\Scripts\python.exe E:/PycharmProjects/pythonProject/demon1/demo50.py
<__main__.CPU object at 0x000002CFDC8886D0> 3091781420752
<__main__.CPU object at 0x000002CFDC8886D0> 3091781420752
------------------------------
<__main__.Disk object at 0x000002CFDC888670>
浅拷贝源对象信息 <__main__.Computer object at 0x000002CFDC9F4C70> <__main__.CPU object at 0x000002CFDC8886D0> <__main__.Disk object at 0x000002CFDC888670>
浅拷贝对象信息 <__main__.Computer object at 0x000002CFDCA36D90> <__main__.CPU object at 0x000002CFDC8886D0> <__main__.Disk object at 0x000002CFDC888670>
----------------------------------------
深拷贝源对象信息 <__main__.Computer object at 0x000002CFDC9F4C70> <__main__.CPU object at 0x000002CFDC8886D0> <__main__.Disk object at 0x000002CFDC888670>
深拷贝对象信息 <__main__.Computer object at 0x000002CFDCA50340> <__main__.CPU object at 0x000002CFDCA48D00> <__main__.Disk object at 0x000002CFDCA48FA0>

进程已结束,退出代码0

 

posted on 2022-09-24 21:26  蓝绝  阅读(33)  评论(0编辑  收藏  举报