一,解決類與類之間代碼允餘問題有兩種方案: 1,繼承 2,組合 1,繼承:描述的是類與類之間,什麼是什麼的關係 2,組合:描述的是類與類之間的關係,是一種什麼有什麼關係 一個類產生的對象,該對象擁有一個屬性,這個屬性的值是來自另一個類的對象 二,組合練習: ...
一,解決類與類之間代碼允餘問題有兩種方案: 1,繼承 2,組合
1,繼承:描述的是類與類之間,什麼是什麼的關係
2,組合:描述的是類與類之間的關係,是一種什麼有什麼關係
一個類產生的對象,該對象擁有一個屬性,這個屬性的值是來自另一個類的對象
1 class Date: 2 def __init__(self,year,mon,day): 3 self.year = year 4 self.mon = mon 5 self.day = day 6 7 def tell_birth(self): 8 print('出生年月日<%s-%s-%s>' % (self.year, self.mon, self.day)) 9 10 class OldboyPeople: 11 school = 'oldboy' 12 13 def __init__(self, name, age, sex): 14 self.name = name 15 self.age = age 16 self.sex = sex 17 18 class OldboyTeacher(OldboyPeople): 19 def __init__(self,name,age,sex,level,salary): 20 super().__init__(name,age,sex) 21 self.level=level 22 self.salary=salary 23 24 def change_score(self): 25 print('teacher %s is changing score' %self.name) 26 27 class Oldboystudent(OldboyPeople): 28 def __init__(self,name,age,sex,course,): 29 super().__init__(name,age,sex,) 30 self.course=course 31 32 def choose(self): 33 print('student %s choose course' %self.name) 34 35 36 tea1=OldboyTeacher('egon',18,'male',9,3.1) 37 date_obj=Date(2000,1,1) 38 # date_obj.tell_birth() 39 40 tea1.birth=date_obj 41 # print(tea1.birth) 42 # tea1.birth.tell_birth() 43 # tea1.change_score() 44 45 stu1=Oldboystudent('張三',16,'male','linux') 46 stu1.birth=Date(2002,3,3) 47 stu1.birth.tell_birth()
二,組合練習:
1 class OldboyPeople: 2 school = 'oldboy' 3 4 def __init__(self, name, age, sex,): 5 self.name = name 6 self.age = age 7 self.sex = sex 8 9 class OldboyTeacher(OldboyPeople): 10 def __init__(self,name,age,sex,level,salary): 11 super().__init__(name,age,sex) 12 self.level=level 13 self.salary=salary 14 15 self.courses=[] 16 17 def change_score(self): 18 print('teacher %s is changing score' %self.name) 19 20 def tell_course_info(self): 21 print(('老師%s 教授的課程信息如下' %self.name).center(50,'=')) 22 for course_obj in self.courses: 23 course_obj.info() 24 25 26 class Oldboystudent(OldboyPeople): 27 def __init__(self,name,age,sex): 28 super().__init__(name,age,sex,) 29 self.courses=[] 30 31 def choose(self): 32 print('student %s choose course' %self.name) 33 34 def tell_course_info(self): 35 print(('學生%s 學習的課程信息如下' % self.name).center(50, '=')) 36 for course_obj in self.courses: 37 course_obj.info() 38 39 class Course: 40 def __init__(self,cname,period,price): 41 self.cname=cname 42 self.period=period 43 self.price=price 44 45 def info(self): 46 print('課程信息<名字:%s 周期:%s 價錢:%s>' %(self.cname,self.period,self.price)) 47 48 49 tea1=OldboyTeacher('egon',18,'male',9,3.1) 50 stu1=Oldboystudent('張三',16,'male') 51 52 python=Course('Python全棧開發','5mons',3000) 53 linux=Course('Linux高級架構師','5mons',2000) 54 go=Course('Go開發工程師','3mons',1000) 55 56 57 # # 給老師添加課程 58 # tea1.courses.append(python) 59 # tea1.courses.append(linux) 60 61 # print(tea1.courses) 62 # tea1.courses[0].info() 63 # for course_obj in tea1.courses: 64 # course_obj.info() 65 66 # tea1.tell_course_info() 67 68 69 # 給學生添加課程 70 stu1.courses.append(python) 71 stu1.courses.append(go) 72 stu1.courses.append(linux) 73 stu1.tell_course_info()