Erlo

组合

2019-03-24 00:02:02 发布   305 浏览  
页面报错/反馈
收藏 点赞

一,解决类与类之间代码允余问题有两种方案:  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()

 

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认