变量的赋值:只是形成两个,实际上还是指向同一个对象。

浅拷贝:拷贝时,对象保护的子对象内容不拷贝。因此,源对象与拷贝对象会引用同一个子对象。

深拷贝:使用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 2023-12-21 21:08  会飞的金鱼  阅读(24)  评论(0)    收藏  举报