7.8 组合 类的继承:什么是什么的关系 类的组合:什么有什么的关系 组合:给对象添加一个属性,让属性指向其他的对象,这样就可以通过这个属性直接调用指向的对象的属性。这种方
7.8 组合
类的继承:什么是什么的关系
类的组合:什么有什么的关系
组合:给对象添加一个属性,让属性指向其他的对象,这样就可以通过这个属性直接调用指向的对象的属性。这种方式就是组合
class People: # 定义一个人类 school = 'a' def __init__(self, name, age): self.name = name self.age = age class Teacher(People): # 定义老师类继承人类 def __init__(self, name, age, level, salary): # 派生__init__方法 super().__init__(name, age) self.level = level self.salary = salary def teach(self): print('%s is teaching' % self.name) class Student(People): # 定义学生类,继承人类 def __init__(self, name, age, number, classtime): # 派生__init__方法 super().__init__(name, age) self.number = number self.classtime = classtime def learn(self): print('%s is learning' % self.name) class Course: # 定义学科类 def __init__(self, coursename, courseprice): self.coursename = coursename self.courseprice = courseprice def tellinfo(self): print('课程名:%s,课程价格:%s' % (self.coursename, self.courseprice, )) t1 = Teacher('t1', 31, 10, 3000) # 实例化 s1 = Student('s1', 18, 1001, '08:30') python = Course('python', 8500) # 实例化 linux = Course('linux', 5000) # 由于学科不能和老师,学生是继承关系,而只是归属关系,所以用下面方式来处理 t1.course = python # 直接给对象添加一个course属性,然后course属性指向python对象 --> 这就是组合 s1.course = [] # 我们也可以让一个属性收纳很多对象 s1.course.append(python) s1.course.append(linux) # 下面输出相同的对象内存地址,说明都指向python对象 print(python) print(t1.course) print(s1.course) # 这样也可以直接调用python对象的方法 t1.course.tellinfo() # 用组合调用python的方法 s1.course[0].tellinfo() # 调用组合对象的方法