一、组合
什么是组合?
就是一个类的属性 的类型 是另一个自定义类的 类型,也可以说是某一个对象拥有一个属性,该属性的值是另一个类的对象。
通过为某一个对象添加属性(这里的属性是另一个类的对象)的方式,间接将两个类关联整合,从而减少类与类之间的代码冗余
class A: pass class B: pass b = B() b.a=A()
借用之前的代码进行改进:
class OldboyPeople: school = 'Oldboy' def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex class OldboyStudent(OldboyPeople): def __init__(self,name,age,sex,score=0): OldboyPeople.__init__(self,name,age,sex) self.score = score self.courses=[] def choose(self): print('%s choosing course' % self.name) def tell_all_course(self): print('学生[%s]选修的课程如下'%self.name) for obj in self.courses: obj.tell_info() class OldboyTeacher(OldboyPeople): def __init__(self,name,age,sex,level): OldboyPeople.__init__(self,name,age,sex) self.level = level self.courses = [] def score(self,stu,num): stu.score = num def tell_all_course(self): print(('老师[%s]教授的课程如下'%self.name).center(50,'*')) for obj in self.courses: obj.tell_info() print('*'*60) class Coures: def __init__(self,c_name,c_price,c_period): self.c_name = c_name self.c_perice = c_price self.c_period = c_period def tell_info(self): print('<课程名:%s 价格:%s 周期:%s'%(self.c_name,self.c_perice,self.c_perice)) stu = OldboyStudent('zfj',18,'male') teh = OldboyTeacher('egon',19,'femal',10) # print(stu.__dict__) python = Coures('python全栈开发','1900','5mons') linux = Coures('linux架构师','100','3mons') stu.courses.append(python) teh.courses.append(python) stu.tell_all_course() teh.tell_all_course()