类的组合

组合

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属性中。

原文地址:https://www.cnblogs.com/z18271397173/p/9130392.html