组合
组合的用途:
1:做关联
2:小的组成大的
组合与继承的使用:
1.当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好
例如:描述一个机器人类,机器人这个大类是由很多互不相关的小类组成,如机械胳膊类、腿类、身体类、电池类
2.当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好
例如:
猫可以:喵喵叫、吃、喝、拉、撒
狗可以:汪汪叫、吃、喝、拉、撒
#课程类 class Course: def __init__(self,c_name,c_type,c_time): self.c_name = c_name self.c_type = c_type self.c_time = c_time def syllabus(self): print('%s课程是%s类型的,几乎每天都上%s分钟的课程'%(self.c_name,self.c_type,self.c_time)) #教师类 (课程类是属于教师类的) class Teacher: def __init__(self,name,sex,age,Course): self.t_name = name self.t_sex = sex self.t_age = age self.t_course = Course def course(self,cou_rse): print('%s老师教龄为%s年是教课程的'%(self.t_name,cou_rse)) #学校类 (教师类和课程类都是属于学校类的) class School: def __init__(self,s_name,address,category,Teacher): self.s_name = s_name self.s_address = address self.s_category = category self.s_course = Course self.s_teacher = Teacher def course(self): print('%s学校的%s课程正在招生'%(self.s_name)) #c1 = Course('语文','文科',45) # c2 = Course('化学','理科',60) # #t1 = Teacher('alex','男',18,c1) # t2 = Teacher('wusir','男',16) s1 = School('oldboy','北京','私立',Teacher('alex','男',18,Course('语文','文科',45))) #可通过s1去获取或者创建t1,在通过t1可以去获取c1 #s2 = School('oldboy','南京','私立') #就实现了,通过组合的方式实现了关联 #s3 = School('oldboy','东京','私立') print(s1.s_teacher.t_course) s1.s_teacher.t_course.syllabus()