深圳儿童医院网上预约挂号,血之羁绊,农转非申请书
目录
组合是用来解决类与类之间代码冗余的问题
首先我们先写一个简单版的选课系统
class oldboypeople: school = 'oldboy' def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex class oldboystudent(oldboypeople): def __init__(self, name, age, sex, stu_id): oldboypeople.__init__(self, name, age, sex) self.stu_id = stu_id def choose_course(self): print('%s is choosing course' % self.name) class oldboyteacher(oldboypeople): def __init__(self, name, age, sex, level): oldboypeople.__init__(self, name, age, sex) self.level = level def score(self, stu, num): stu.score = num print('老师[%s]为学生[%s]打分[%s]' % (self.name, stu.name, num)) stu1 = oldboystudent('tank', 19, 'male', 1) tea1 = oldboyteacher('nick', 18, 'male', 10)
stu1.choose_course()
tank is choosing course
tea1.score(stu1, 100)
老师[nick]为学生[tank]打分[100]
print(stu1.__dict__)
{'name': 'tank', 'age': 19, 'sex': 'male', 'stu_id': 1, 'score': 100}
需求:假如我们需要给学生增添课程属性,但是又不是所有的老男孩学生一进学校就有课程属性,课程属性是学生来老男孩后选出来的,也就是说课程需要后期学生们添加进去的
实现思路:如果我们直接在学生中添加课程属性,那么学生刚被定义就需要添加课程属性,这就不符合我们的要求,因此我们可以使用组合能让学生未来添加课程属性
class course: def __init__(self, name, period, price): self.name = name self.period = period self.price = price def tell_info(self): msg = """ 课程名:%s 课程周期:%s 课程价钱:%s """ % (self.name, self.period, self.price) print(msg) class oldboypeople: school = 'oldboy' def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex class oldboystudent(oldboypeople): def __init__(self, name, age, sex, stu_id): oldboypeople.__init__(self, name, age, sex) self.stu_id = stu_id def choose_course(self): print('%s is choosing course' % self.name) class oldboyteacher(oldboypeople): def __init__(self, name, age, sex, level): oldboypeople.__init__(self, name, age, sex) self.level = level def score(self, stu, num): stu.score = num print('老师[%s]为学生[%s]打分[%s]' % (self.name, stu.name, num))
# 创造课程 python = course('python全栈开发', '5mons', 3000) python.tell_info()
课程名:python全栈开发 课程周期:5mons 课程价钱:3000
linux = course('linux运维', '5mons', 800) linux.tell_info()
课程名:linux运维 课程周期:5mons 课程价钱:800
# 创造学生与老师 stu1 = oldboystudent('tank', 19, 'male', 1) tea1 = oldboyteacher('nick', 18, 'male', 10)
# 将学生、老师与课程对象关联/组合 stu1.course = python tea1.course = linux
stu1.course.tell_info()
课程名:python全栈开发 课程周期:5mons 课程价钱:3000
tea1.course.tell_info()
课程名:linux运维 课程周期:5mons 课程价钱:800
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论