类的组合
发布时间:2020-12-20 10:09:12 所属栏目:Python 来源:网络整理
导读:类的组合初识 什么是类的组合 将毫无关系的多个类在一个类中执行实例化,让彼此之间产生关联.就是类的组合 为什么要有类的组合 通过类的组合,可以使程序的逻辑更为明确,从而增强了程序的可扩展性。 类的组合使用注意事项 类的组合在设计时对于初学者来说会
类的组合初识什么是类的组合
为什么要有类的组合
类的组合使用注意事项
案例分析类的组合案例初始版
class School(object): """学校类""" def __init__(self,name): self.name = name self.class_obj_list = [] def add_classes(self,class_obj): 新增班级""" self.class_obj_list.append(class_obj) show_classes(self): 查看班级信息""" print("[{0}]的班级信息如下".format(self.name)) for classes in self.class_obj_list: classes.show_classes_msg() #直接调用对象的方法 Classes(object): 班级类 name self.create_time = create_time self.course_obj_list = [] add_course(self,course_obj): 新增课程 self.course_obj_list.append(course_obj) show_classes_msg(self): 班级的名字是:[{0}].班级的创建时间是[{1}].format(self.name,self.create_time)) show_course(self): 查看课程信息[{0}]的课程信息如下:for course self.course_obj_list: course.show_course_msg() 直接调用对象的方法 Course(object): 课程类""" name self.price = price show_course_msg(self): 课程的名字是:[{0}].课程的价格是[{1}] ==== 添加学校 === s1 = School(黄埔军校) ==== 为学校添加班级 ==== classes_1 = Classes(陆军1班",1927-01-28) classes_2 = Classes(海军2班1927-02-14) s1.add_classes(classes_1) s1.add_classes(classes_2) ==== 为班级添加课程 === course_1 = Course(坦克驾驶技术) course_2 = Course(轰炸机驾驶技术) classes_1.add_course(course_1) classes_2.add_course(course_2) ==== 查看学校的班级信息 ==== s1.show_classes() ==== 查看班级的课程信息 ==== classes_1.show_course() classes_2.show_course() ===- 执行结果 ==== [黄埔军校]的班级信息如下 班级的名字是:[陆军1班].班级的创建时间是[1927-01-28] 班级的名字是:[海军2班].班级的创建时间是[1927-02-14] [陆军1班]的课程信息如下: 课程的名字是:[坦克驾驶技术].课程的价格是[19999] [海军2班]的课程信息如下: 课程的名字是:[轰炸机驾驶技术].课程的价格是[12888] """ 类的组合案例优化版
""" 为某一班级新增课程for cls self.class_obj_list: if cls.name == cls_name: cls.course_obj_list.append(Course(course_name,course_price)) 直接实例化添加对象 直接调用对象的方法 show_course(self,cls_name): 通过输入班级名拿到其下所有课程信息 cls_name: cls.show_course() s1.add_classes(Classes()) s1.add_classes(Classes()) s1.add_course() s1.add_course( s1.show_course() s1.show_course(""" 案例总结通过上面的案例,我们可以发现在使用时确实变得非常简单,单纯的调某一个方法即可。但是设计时确实不太好设计,各位感兴趣的可以在此基础上做一些增加,比如老师,学生等等的类。 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |