zoukankan      html  css  js  c++  java
  • 组合

    在一个类中以另外一个类的对象作为数据属性,称为类的组合。

    组合和继承都是有效利用已有类的资源的重要方式。区别:

    继承:通过继承建立了派生类和基类之间的关系,是一种“是”的关系。当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好。例如:学生是人,老师是人。

    组合:用组合的方式建立了类与组合之间的关系,是一种“有”的关系。例如:人有生日,老师有课程

    当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。

    class People:
        school = "university"
    
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
    class Teacher(People):       # 继承
        def __init__(self,name,age,sex,level,salary):
            super(Teacher, self).__init__(name,age,sex)
            self.level = level
            self.salary = salary
    
        def teach(self):
            print("%s is teaching"%self.name)
    
    
    class Student(People):
        def __init__(self, name, age, sex, class_time):
            super(Student, self).__init__(name,age,sex)
            self.class_time = class_time
    
        def learn(self):
            print("%s is learning" % self.name)
    
    class Course:
        def __init__(self,name,price,period):
            self.course_name = name
            self.course_price = price
            self.course_period = period
    
        def tell_info(self):
            print("课程名:%s,课程价钱:%s,课程周期:%s"%(self.course_name,self.course_price,self.course_period))
    
    class Date():
        def __init__(self,year,mon,day):
            self.year = year
            self.mon = mon
            self.day = day
    
        def tell_info(self):
            print("%s-%s-%s"%(self.year,self.mon,self.day))
    
    
    # teacher1  = Teacher("alex",20,"male",10,3000)
    # python = Course("python",3000,"3months")
    # linux = Course("linux",2000,"4months")
    #
    # teacher1.course = python    # 让老师有了一个属性,指向课程
    
    # print(teacher1.course.course_name)
    # teacher1.course.tell_info()
    #
    # student = Student("张三",28,"female","8:00")
    # student.course1 = python
    # student.course2 = linux
    # student.course1.tell_info()
    # student.course2.tell_info()
    # student.courses=[]
    # student.courses.append(python)
    # student.courses.append(linux)
    # for i in student.courses:
    #     print(i.__dict__)
    
    student = Student("张三",28,"female","8:00")
    d = Date(1988,4,20)
    student.birth = d    # 组合
    student.birth.tell_info()
    

      

      

  • 相关阅读:
    vijos 1167 南蛮图腾(打印图案)
    noj 1413 Weight 宁波 (dp)
    noj 1173 (宁波)Birdlike Angry Pig (暴力枚举)
    [1438] Get Up, Soldier! noj(宁波)
    [1441] Babelfish noj(宁波)
    长沙理工大学oj 1486: 文本整齐度 哈理工 1476(dp)
    noj 1414 (宁波) Rectangular Parallelopiped(sort+dp)
    8.6前端之内联框架
    8.5前端之Html样式和文本格式化
    8.5前端之类和id
  • 原文地址:https://www.cnblogs.com/fantsaymwq/p/9912363.html
Copyright © 2011-2022 走看看