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