
深拷贝与浅拷贝
class CPU(): pass class Dick(): pass class Computer(): #计算机由cpu和硬盘 def __init__(self,cpu,dick): self.cpu=cpu self.dick=dick cpu=CPU() #创建一个cpu对象 dick=Dick() #创建一个硬盘对象 #创建一个计算机对象 com=Computer(cpu,dick) #变量的赋值 com1=com print(com1,'子对象的内存地址:',com1.cpu,com1.dick) print(com,'子对象的内存地址:',com.cpu,com.dick) #类对象的浅拷贝 import copy com2=copy.copy(com) #com2是新产生的对象,com2的子对象,cpu,dick不变 print(com,'子对象的内存地址:',com.cpu,com.dick) print(com2,'子对象的内存地址:',com2.cpu,com2.dick) #类对象的深拷贝 com3=copy.deepcopy(com) #com3是新产生的对象,com3的子对象,cpu,dick也会重新产生 print(com,'子对象的内存地址:',com.cpu,com.dick) print(com3,'子对象的内存地址:',com3.cpu,com3.dick)
输出
<main.Computer object at 0x000001ED5F24E490> 子对象的内存地址: <main.CPU object at 0x000001ED5F24E410> <main.Dick object at 0x000001ED5F24E450> <main.Computer object at 0x000001ED5F24E490> 子对象的内存地址: <main.CPU object at 0x000001ED5F24E410> <main.Dick object at 0x000001ED5F24E450> <main.Computer object at 0x000001ED5F24E490> 子对象的内存地址: <main.CPU object at 0x000001ED5F24E410> <main.Dick object at 0x000001ED5F24E450> <main.Computer object at 0x000001ED5F0D4350> 子对象的内存地址: <main.CPU object at 0x000001ED5F24E410> <main.Dick object at 0x000001ED5F24E450> <main.Computer object at 0x000001ED5F24E490> 子对象的内存地址: <main.CPU object at 0x000001ED5F24E410> <main.Dick object at 0x000001ED5F24E450> <main.Computer object at 0x000001ED5F24E550> 子对象的内存地址: <main.CPU object at 0x000001ED5F24E4D0> <main.Dick object at 0x000001ED5F24E590>


(仅供参考)
Comments NOTHING