博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三模块-第一章笔记(组合篇)
阅读量:5298 次
发布时间:2019-06-14

本文共 2462 字,大约阅读时间需要 8 分钟。

组合     组合的概念:软件重用的重要方式除了继承之外还有另外一种方式,即:组合     组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合         class Equip:  # 武器装备类             def fire(self):                 print('release Fire skill')         class Riven: # 英雄Riven的类,一个英雄需要有装备,因而需要组合Equip类             camp = 'Noxus'             def __init__(self, nickname):                 self.nickname = nickname                 self.equip = Equip()  # 用Equip类产生一个装备,赋值给实例的equip属性         r1=Riven('锐雯雯')         r1.equip.fire()  # 可以使用组合的类产生的对象所持有的方法     组合与继承的区别         组合与继承都是有效地利用已有类的资源的重要方式。但是二者的概念和使用场景皆不同。         1.继承的方式             通过继承建立了派生类与基类之间的关系,它是一种'是'的关系,比如白马是马,人是动物。             当类之间有很多相同的对象,提取这些共同的功能做成基类,用继承比较好,比如:             #教授是老师                 class Teacher:                     def __init__(self, name, gender):                         self.name = name                         self.gender = gender                     def teach(self):                         print('teaching')                 class Professor(Teacher):                     pass                 p1 = Professor('egon', 'male')                 p1.teach()           2.组合的方式             用组合的方式建立了类与组合的类之间的关系,它是一种“有”的关系,比如教授有生日             #教授教python课程                 class BirthDate:                     def __init__(self, year, month, day):                         self.year = year                         self.month = month                         self.day = day                 class Couse:                     def __init__(self, name, price, period):                         self.name = name                         self.price = price                         self.period = period                 class Teacher:                     def __init__(self, name, gender):                         self.name = name                         self.gender = gender                     def teach(self):                         print('teaching')                 class Professor(Teacher):                     def __init__(self, name, gender, birth, course):                         Teacher.__init__(self, name, gender)                         self.birth = birth                         self.course = course                 p1 = Professor('egon','male',BirthDate('1999','1','27'),Couse('python','28000','4 months'))                 print(p1.birth.year,p1.birth.month,p1.birth.day)                 print(p1.course.name,p1.course.price,p1.course.period)             当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。

转载于:https://www.cnblogs.com/changha0/p/8299130.html

你可能感兴趣的文章
pip和easy_install使用方式
查看>>
博弈论
查看>>
Redis sentinel & cluster 原理分析
查看>>
我的工作习惯小结
查看>>
把word文档中的所有图片导出
查看>>
Spring 自动装配;方法注入
查看>>
浏览器的判断;
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
uva 10791
查看>>
python的字典(dict)的键值对存储规则
查看>>
more 分页显示文件内容
查看>>
ubuntu18 tensorflow cpu fast_rcnn
查看>>
PageHelper在Mybatis中的使用
查看>>
POJ 1742 Coins
查看>>
Leetcode 589. N-ary Tree Preorder Traversal
查看>>
ADO.Net——增、删、改、查
查看>>
thinking back no11
查看>>
机器学习/深度学习/其他开发环境搭建记录
查看>>
xml.exist() 实例演示
查看>>
判断是否为空然后赋值
查看>>