深拷贝
类的拷贝:
- 浅拷贝:python中的拷贝一般都是浅拷贝,拷贝时,被拷贝对象的子对象内容不进行拷贝,所以,被拷贝的对象和拷贝后的赋值的对象会引用同一个子对象。
- 深拷贝:需要调用copy模块的deepcopy函数,递归拷贝对象中包含的子对象,所以,被拷贝的对象和拷贝后的赋值的对象会引用不同的子对象。
"""
类的拷贝:
浅拷贝:python中的拷贝一般都是浅拷贝,拷贝时,被拷贝对象的子对象内容不进行拷贝,
所以,被拷贝的对象和拷贝后的赋值的对象会引用同一个子对象。
深拷贝:需要调用copy模块的deepcopy函数,递归拷贝对象中包含的子对象,
所以,被拷贝的对象和拷贝后的赋值的对象会引用不同的子对象。
"""
class Cpu:
pass
class Disk:
pass
class Computer:
def __init__(self, cpu, disk):
self.cpu = cpu
self.disk = disk
# 实例化对象
cpu1 = Cpu()
disk1 = Disk()
computer1 = Computer(cpu1, disk1)
# print(cpu1)
# print(disk1)
# print(Cpu())
# print(Disk())
# print(Computer(Cpu(),Disk()))
# 浅拷贝
import copy
computer2 = copy.copy(computer1) # 将浅拷贝的对象赋值给computer2
print(computer1, "\n", computer1.cpu, "\n", computer1.disk)
print("---------------------------------------------------------")
print(computer2, "\n", computer2.cpu, "\n", computer2.disk)
内在逻辑图示: