第十一章 面向对象之类的组合

第十一章 面向对象之类的组合

一、什么是组合

组合就是一个类的对象具备某一个属性,这个属性的值是另外一个类的对象

二、为什么用组合

  • 组合是用来解决类与类之间的代码冗余的问题

  • 需求:假如我们需要给学生增添课程属性,但是又不是所有的老男孩学生一进学校就有课程属性,课程属性是学生来老男孩后选出来的,也就是说课程需要后期学生们添加进去的

  • 实现思路:如果我们直接在学生中添加课程属性,那么学生刚被定义就需要添加课程属性,这就不符合我们的要求,因此我们可以使用组合能让学生未来添加课程属性

  • class People():
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
    class Student(People):
        def __init__(self,name,age):
            self.course_list=[]
            super().__init__(name,age)
    
        def choose_course(self,course):
            self.course_list.append(course)
    
    class Course():
        def __init__(self,course_name,course_price):
            self.name=course_name
            self.price=course_price
    
    course=Course('语文',20000)#先给生成的course对象赋值
    student1=Student('ypp',18)#生成一个学生对象
    student1.choose_course(course)#把course对象传到student的choose_course()方法
    
    for course in student1.course_list:
        print(course.name)
    print(student1.__dict__)
    ---------------------------------------------------
    语文
    ------------------------------------------------
    {'course_list': [<__main__.Course object at 0x0000016A4928EE48>], 'name': 'ypp', 'age': 18}
    #可见student1参数可以存放对象

猜你喜欢

转载自www.cnblogs.com/demiao/p/11425611.html
今日推荐