zoukankan      html  css  js  c++  java
  • 组合

    一、组合

    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
    
    

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

  • 相关阅读:
    获取与端点的连接
    判断div内滚动条是否在底部
    MVC的使用!
    格式转换解决存取数据安全问题
    JQuery input file 上传图片
    contenteditable 常用的一些CSS !!
    C# 生成Json类型数据
    生成Excel
    生成验证码
    图片水印
  • 原文地址:https://www.cnblogs.com/SkyOceanchen/p/11425765.html
Copyright © 2011-2022 走看看