组合
2019-04-11 10:49:59来源:博客园 阅读 ()
一,解决类与类之间代码允余问题有两种方案: 1,继承 2,组合
1,继承:描述的是类与类之间,什么是什么的关系
2,组合:描述的是类与类之间的关系,是一种什么有什么关系
一个类产生的对象,该对象拥有一个属性,这个属性的值是来自另一个类的对象
1 class Date: 2 def __init__(self,year,mon,day): 3 self.year = year 4 self.mon = mon 5 self.day = day 6 7 def tell_birth(self): 8 print('出生年月日<%s-%s-%s>' % (self.year, self.mon, self.day)) 9 10 class OldboyPeople: 11 school = 'oldboy' 12 13 def __init__(self, name, age, sex): 14 self.name = name 15 self.age = age 16 self.sex = sex 17 18 class OldboyTeacher(OldboyPeople): 19 def __init__(self,name,age,sex,level,salary): 20 super().__init__(name,age,sex) 21 self.level=level 22 self.salary=salary 23 24 def change_score(self): 25 print('teacher %s is changing score' %self.name) 26 27 class Oldboystudent(OldboyPeople): 28 def __init__(self,name,age,sex,course,): 29 super().__init__(name,age,sex,) 30 self.course=course 31 32 def choose(self): 33 print('student %s choose course' %self.name) 34 35 36 tea1=OldboyTeacher('egon',18,'male',9,3.1) 37 date_obj=Date(2000,1,1) 38 # date_obj.tell_birth() 39 40 tea1.birth=date_obj 41 # print(tea1.birth) 42 # tea1.birth.tell_birth() 43 # tea1.change_score() 44 45 stu1=Oldboystudent('张三',16,'male','linux') 46 stu1.birth=Date(2002,3,3) 47 stu1.birth.tell_birth()
二,组合练习:
1 class OldboyPeople: 2 school = 'oldboy' 3 4 def __init__(self, name, age, sex,): 5 self.name = name 6 self.age = age 7 self.sex = sex 8 9 class OldboyTeacher(OldboyPeople): 10 def __init__(self,name,age,sex,level,salary): 11 super().__init__(name,age,sex) 12 self.level=level 13 self.salary=salary 14 15 self.courses=[] 16 17 def change_score(self): 18 print('teacher %s is changing score' %self.name) 19 20 def tell_course_info(self): 21 print(('老师%s 教授的课程信息如下' %self.name).center(50,'=')) 22 for course_obj in self.courses: 23 course_obj.info() 24 25 26 class Oldboystudent(OldboyPeople): 27 def __init__(self,name,age,sex): 28 super().__init__(name,age,sex,) 29 self.courses=[] 30 31 def choose(self): 32 print('student %s choose course' %self.name) 33 34 def tell_course_info(self): 35 print(('学生%s 学习的课程信息如下' % self.name).center(50, '=')) 36 for course_obj in self.courses: 37 course_obj.info() 38 39 class Course: 40 def __init__(self,cname,period,price): 41 self.cname=cname 42 self.period=period 43 self.price=price 44 45 def info(self): 46 print('课程信息<名字:%s 周期:%s 价钱:%s>' %(self.cname,self.period,self.price)) 47 48 49 tea1=OldboyTeacher('egon',18,'male',9,3.1) 50 stu1=Oldboystudent('张三',16,'male') 51 52 python=Course('Python全栈开发','5mons',3000) 53 linux=Course('Linux高级架构师','5mons',2000) 54 go=Course('Go开发工程师','3mons',1000) 55 56 57 # # 给老师添加课程 58 # tea1.courses.append(python) 59 # tea1.courses.append(linux) 60 61 # print(tea1.courses) 62 # tea1.courses[0].info() 63 # for course_obj in tea1.courses: 64 # course_obj.info() 65 66 # tea1.tell_course_info() 67 68 69 # 给学生添加课程 70 stu1.courses.append(python) 71 stu1.courses.append(go) 72 stu1.courses.append(linux) 73 stu1.tell_course_info()
原文链接:https://www.cnblogs.com/HZLS/p/10586193.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:初识Python
- python多线程同步实例分析 2019-08-13
- linux安装 uwsgi 测试 test.py 不显示hello world 的解决办 2019-08-13
- 解决python中的Non-UTF-8 code starting with ‘\xbs4’ in 2019-07-24
- Python 用(无脑 and 有脑)方式解决小练习 2019-07-24
- django修改表数据结构后报错的解决办法 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash