深拷贝与浅拷贝
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