zoukankan      html  css  js  c++  java
  • 第十一章 面向对象之类的组合

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

    一、什么是组合

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

    二、为什么用组合

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

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

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

    • 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参数可以存放对象
      
  • 相关阅读:
    go websocket
    go websocket 调试报错 request origin not allowed by Upgrader
    uniapp中使用阿里巴巴图标iconfont
    TS视频一
    ReactiveCocoa
    weak 的内部实现原理
    谈Objective-C block的实现
    基础面试总结
    理解 iOS 的内存管理
    URL Scheme
  • 原文地址:https://www.cnblogs.com/demiao/p/11425611.html
Copyright © 2011-2022 走看看