赋值,深拷贝与浅拷贝的不同
赋值是用一个其他的变量名替代原来的对象,但指向的地址没有变化
浅拷贝指的是 只拷贝当前对象,但拷贝的对象与被拷贝的对象公用同一个子对象(即公用的子对象的地址相同)。
深拷贝指的是 不仅当前对象进行拷贝,被拷贝对象的子对象同样被拷贝(不公用子对象)
赋值:
a=1
print(id(a))
b=a
print(id(b))
浅拷贝的使用方法
import copy
新对象=copy.copy(对象)
深拷贝的使用方法
新对象=copy.deepcopy(对象)
代码演示:
#赋值
a=1
print(id(a))
b=a
print(id(b))
#浅拷贝 python拷贝一般都是浅拷贝 拷贝时对象,包含的子对象内容不拷贝,因此源对象与拷贝对象会引用同一个子对象
class cpu:
pass
class disk:
pass
class Computer(cpu,disk):
def __init__(self,cpu,disk):
super().__init__()
self.cpu=cpu
self.disk=disk
#浅拷贝
cpu1=cpu()
disk1=disk()
computer=Computer(cpu1,disk1)
import copy
computer2=copy.copy(computer)
print(computer,computer.cpu)
print(computer2,computer2.cpu)
cpu1=cpu()
disk1=disk()
computer=Computer(cpu1,disk1)
import copy
computer2=copy.deepcopy(computer)
print(computer2,computer2.cpu)
print(computer,computer.cpu)