#浅拷贝示意图
#深拷贝示意图
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