变量的赋值:只是形成两个,实际上还是指向同一个对象。
浅拷贝:拷贝时,对象保护的子对象内容不拷贝。因此,源对象与拷贝对象会引用同一个子对象。
深拷贝:使用copy模块的deepcopy函数,递归拷贝对象中包含的子对象,源对象和拷贝对象所有的子对象也不相同。
class Cpu(): pass class Disk(): pass class Computer(): def __init__(self,cpu,disk): self.cpu=cpu self.disk=disk cpu=Cpu() disk=Disk() com=Computer(cpu,disk) # 变量的赋值(指向的是同一个对象,子对象的也是一样的) com1=com print(com,'子对象的内存地址',com.cpu,com.disk) print(com1,'子对象的内存地址',com1.cpu,com1.disk) print('*'*50) import copy # 浅拷贝 com1=copy.copy(com) # com2是产生的新对象,而com2的子对象不变 print(com,'子对象的内存地址',com.cpu,com.disk) print(com1,'子对象的内存地址',com1.cpu,com1.disk) print('*'*50) # 深拷贝 com1=copy.deepcopy(com) # com2是产生的新对象,而com2的子对象也是新对象 print(com,'子对象的内存地址',com.cpu,com.disk) print(com1,'子对象的内存地址',com1.cpu,com1.disk)
posted on
浙公网安备 33010602011771号