第6章作业

这篇博客探讨了Python编程中的几个关键概念。首先,介绍了对象的浅拷贝和深拷贝的原理及内存示意图。接着,通过实例展示了如何使用组合关系构建汽车类,包括发动机、底盘、座椅和外壳,并实现了run()方法。此外,讲解了工厂模式和单例模式,以电脑工厂为例,创建不同品牌电脑并重写了calculate方法。最后,定义了一个Employee类,实现了自动id分配、薪水加法运算符重载及salary属性的get/set方法限制。
摘要由CSDN通过智能技术生成

1. 如下代码测试对象的浅拷贝、深拷贝,请绘制出内存示意图。

import copy
class MobilePhone:
   def __init__(self,cpu,screen):
      self.cpu = cpu
      self.screen = screen
class Cpu:
   def calculate(self):
      print('cpu对象',self)
class Screen:
   def show(self):
      print('显示一个好看的画面',self)


c1 = Cpu()
c2 = c1 # 单纯地引用,没有任何辅助,因为开始的地址一样
print(c1)
print(c2)
s1 = Screen()
m1 = MobilePhone(c1,s1)
m2 = copy.copy(m1) # 浅复制,复制本身,后面都是引用,最开始的地址不同,但内部的地址全部相同
print(m1,m1.cpu,m1.screen)
print(m2,m2.cpu,m2.screen)
m3 = copy.deepcopy(m1) # 深复制,复制一套体系,所有地址都不相同
print(m1,m1.cpu,m1.screen)
print(m3,m3.cpu,m3.screen)

运行结果如下

<__main__.Cpu object at 0x0000023408ABA5C8>
<__main__.Cpu object at 0x0000023408ABA5C8>
<__main__.MobilePhone object at 0x0000023408B1AB08> <__main__.Cpu object at 0x0000023408ABA5C8> <__main__.Screen object at 0x0000023408B1AA88>
<__main__.MobilePhone object at 0x0000023408B1AB48> <__main__.Cpu object at 0x0000023408ABA5C8> <__main__.Screen object at 0x0000023408B1AA88>
<__main__.MobilePhone object at 0x0000023408B1AB08> <__main__.Cpu object at 0x0000023408ABA5C8> <__main__.Screen object at 0x0000023408B1AA88>
<__main__.MobilePhone object at 0x000002340
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值