• 组合


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

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

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

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

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

    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()
    

      

      

  • 相关阅读:
    【2019-12-20】做好人和己可以事半功倍
    【2019-12-11】人生信条再抄写
    【2019-12-10】人生信条抄写
    【2019-12-19】多跟自己讲讲道理
    【2019-12-18】要时刻警惕思维固化
    【2019-12-17】做人还是要回归朴实
    爬取美团
    总结day7 ---- 函数的内容 ,初识,返回值,进阶(一)
    day05 --class --home
    一期 自检:
  • 原文地址:https://www.cnblogs.com/fantsaymwq/p/9912363.html
Copyright © 2020-2023  润新知