zoukankan      html  css  js  c++  java
  • 类的组合

    组合

    1、python中除了类与类的继承关系外,还有组合的关系。

    什么是组合:就是解决一个类作为另一个类的属性。

    与继承不同的是:组合表达了:‘’什么‘’有“什么”的关系。同样能解决代码重用的问题。

    代码如下:

    import pickle
    class People:
    
        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().__init__(name, age, sex)
            self.Level = level
            self.Salary = salary
            self.teacher_course=[]
    
        def teacher(self):
            with open('4.txt','rb') as f:
                self.course_list = pickle.load(f)
                print(self.course_list)
                for i in self.course_list:
                    print(i)
    
        def create(self):
            course_name = input("课程名称:")
            course_prise = input("课程价格:")
            course_period = input("课程周期:")
            print(course_name)
            course_name = Course(course_name, course_prise, course_period)
            print(course_name.__dict__)
            self.teacher_course.append(course_name)
            with open('7.txt', 'wb') as f:
                pickle.dump(self.teacher_course, f)
            f.close()
    
    
    class Student(People):
        school = 'Luffycity'
    
        def __init__(self, name, age, sex, class_time):
            super().__init__(name, age, sex)
            self.Class_time =class_time
    
        def learn(self):
            print('%s is learning' % self)
    
    
    class Course:
        def __init__(self, course_name, course_prise, course_period):
            self.course_name = course_name
            self.course_prise = course_prise
            self.course_period = course_period
    
    
    
    
    teacher1 = Teacher('alex', 18, 'male', 10, 2000)
    
    student = Student('张阿撒', 10, 'male', '08:30:00')
    teacher1.create()
    teacher1.teacher()

    思路分析:在该代码中,一共有四个类,分别是:学生类,教师类,课程类,以及人这个类。为了解决代码重用的问题。我总共用了两种方法:一,继承。什么是什么的关系,学生类和教师类继承了人这个类,通过super方法实现了部分实例化的特征属性的重用问题。二,组合,什么有什么的关系,课程和老师就是组合的关系,通过在create方法中创建该老师的课程,添加到老师对象的teacher_course属性中。

  • 相关阅读:
    Httpclient的应用
    sql树形结构
    发送邮件
    关于多态的思考
    java集合整体结构
    应用--对HashMap进行排序(转为LinkedHashMap)
    初识POI操作Excel
    常用的开发工具
    [redis]Redis Transaction
    [ajax] quick double or multiple click ajax submit cause chrome explorer's error snatshot
  • 原文地址:https://www.cnblogs.com/z18271397173/p/9130392.html
Copyright © 2011-2022 走看看