Python中赋值、浅复制和深复制的区别

import copy
class Moblephone:
    def __init__(self,cpu,screen):
        self.cpu=cpu
        self.screen=screen
class Cpu:
    def calculate(self):
        print("顶你个肺")
        print("普尼劳改")
class Screen:
    def show(self):
        print("看毛线")
        print("biubiu",self)
print("测试变量赋值")
m1=Cpu()
m2=m1
print(m1)
print(m2)
print("测试浅复制")
m3=Screen()
m4=Moblephone(m1,m3)
m5=copy.copy(m4)
print(m4,m4.cpu,m4.screen)
print(m5,m5.cpu,m5.screen)
print("测试深复制")
m6=copy.deepcopy(m4)
print(m4,m4.cpu,m4.screen)
print(m6,m6.cpu,m6.screen)
#返回值:
##测试变量赋值,地址相同
##<__main__.Cpu object at 0x0000022AF1A686D8>
##<__main__.Cpu object at 0x0000022AF1A686D8>
##测试浅复制,复制的对象地址不同,子对象地址相同
##<__main__.Moblephone object at 0x0000022AF1A68588> <__main__.Cpu object at 0x0000022AF1A686D8> <__main__.Screen object at 0x0000022AF1A68630>
##<__main__.Moblephone object at 0x0000022AF1A68F98> <__main__.Cpu object at 0x0000022AF1A686D8> <__main__.Screen object at 0x0000022AF1A68630>
##测试深复制,对象以及所有的子对象地址都不同
##<__main__.Moblephone object at 0x0000022AF1A68588> <__main__.Cpu object at 0x0000022AF1A686D8> <__main__.Screen object at 0x0000022AF1A68630>
##<__main__.Moblephone object at 0x0000022AF1A688D0> <__main__.Cpu object at 0x0000022AF1A6B6D8> <__main__.Screen object at 0x0000022AF1A6B5C0>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值