• 组合


    一、组合

    1.1什么是组合

    对象的某个属性是另外一个类的对象,就是一个类的对象具备某一个属性,该属性的值是指向另外一个类的对象

    1.1.1组合的概念

    class Foo:
        def __init__(self,bar):
            self.bar = bar
    class Bar:
        pass
    bar = Bar()
    f = Foo(bar)
    

    1.1 为什么使用组合

    可以减少代码的冗余

    class Person:
        school = 'oldbody'
    class Teacher(Person):
        def __init__(self,name,age,level,course):
            self.name = name
            self.age = age
            self.level = level
            #course是课程对象,表示老师教授的课程
            self.course = course
    class Student(Person):
        def __init__(self,name,age,course):
            self.name = name
            self.age = age
            #course是课程对象,表示学生选的课程
            self.course = course
    class Course:
        def __init__(self,course_name,course_price,course_period):
            self.name = course_name
            self.price = course_price
            self.period = course_period
    
    course = Course('python',20189,7)
    stu = Student('chen',19,course)
    teacher = Teacher('chen',19,'高级',course)
    print(teacher.course.name)
    
    

    1.2如何使用

    class Person:
        school = 'oldbody'
    class Teacher(Person):
        def __init__(self,name,age,level,course):
            self.name = name
            self.age = age
            self.level = level
            self.course = course
    class Stundent(Person):
        def __init__(self,name,age):
            self.name = name
            self.age = age
            self.course_list = []
        def choose_course(self,course):
            #把课程对象追加到学生选课的列表中
            self.course_list.append(course)
        def tell_all_course(self):
            #循环学生选课列表,每次拿出一个课程对象
            for course in self.course_list:
                print(course.name)
    class Course:
        def __init__(self,course_name,cour_price,cour_peroid):
            self.name = course_name
            self.price = cour_price
            self.period = cour_peroid
    
    course = Course('python',201999,7)
    stu1 = Stundent('nick',18)
    stu1.choose_course(course)
    stu2 = Stundent('chen',19)
    stu2.choose_course(course)
    stu2.choose_course(Course('linx',19999,5))
    
    # 查看stu1选择的所有课程名称
    #方式一(通过普通函数)
    def tell_all_course(student):
        for course in student.course_list:
            print(course.name)
    tell_all_course(stu1)
    
    #
    
    python
    
    #方式二(通过对象的绑定方法)
    stu2.tell_all_course()
    
    #
    
    python
    linx
    
    

    组合可以理解成多个人去造一个机器人,有的人造头、有的人造脚、有的人造手、有的人造躯干,大家都完工后,造躯干的人把头、脚、手拼接到自己的躯干上,因此一个机器人便造出来了

  • 相关阅读:
    Mime Types
    对MySQL DELETE语法的详细解析
    创建MySQL存储过程示例
    Python安装
    python学习之matplotlib实战
    python学习之numpy实战
    SQLserver建表规则
    机器学习之BP神经网络
    机器学习之决策树算法
    Spring学习总结
  • 原文地址:https://www.cnblogs.com/SkyOceanchen/p/11425765.html
Copyright © 2020-2023  润新知