day21-3 类的组合

类的组合

  • 组合就是一个类的对象具备某一个属性,该属性的值是指向另外一个类的对象
  • 组合的好处:解决类与类之间代码冗余的问题

组合的应用

  • 需求:假如我们需要给学生增添课程属性,但是又不是所有的学生一进学校就有课程属性,课程属性是学生选出来的,也就是说课程需要后期学生们添加进去
  • 实现思路:如果我们直接在学生中添加课程属性,那么学生刚被定义就需要添加课程属性,这就不符合我们的要求,因此我们可以使用组合能让学生未来添加课程属性
class People:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender


class Student(People):
    def __init__(self, student_id, name, age, gender):
        super(Student, self).__init__(name, age, gender)
        self.student_id = student_id

    def choose_course(self, course):
        print(f'{self.name} 选了 {course.name} 课程')


class Admin(People):
    def create_course(self, course):
        print(f'{self.name} 创建课程 {course.name}')


class Course:
    def __init__(self, name, price):
        self.name = name
        self.price = price

# 生成一个管理员
adm = Admin('egon', 20, 'male')

# 创建课程
python = Course('python', 6666)
adm.create_course(python)

# 生成一个学生对象+选课
stud1 = Student('01', 'nick', 18, 'male')
stud1.choose_course(python)
egon 创建课程 python
nick 选了 python 课程
posted @ 2019-06-19 16:14  Never&say&die  阅读(129)  评论(0编辑  收藏  举报