作为初学者,很多时候习惯了面向程序编程,对于面向对象编程既熟悉又陌生...(开场白)
直接上上干货,我也是个初学者,之前只玩过C,所以可能比较有共同语言......
首先,要明确的问题是何为对象,对象是什么?
......
各种Python书籍中写的都差不多,就我个人理解,对象就是游戏里的角色,大家都玩过CS吧,10个警察和1个匪徒,这11个人,每个人都是一个对象,他们有自己的武器库,金钱,血等等,这些都是这个对象拥有的属性,就跟我们人的名字一样,这就是对象。
其实,面向对象编程,就是创建一个人物或者别的东西,我们赋予它生命,可以干我们想让它去干我们想完成的事情,编程就是一个赋予生命的过程。
先不上代码,先扯点大家关心的,如果存在多个对象,那么多个对象间的交互如何完成?
比如说,有学校,老师,班级,学生,这四个角色,老师肯定要跟学校有关的,而一个老师可能要去多个班级上课,每个班级的学生也不一样,每个学校的学生也不一样,这个关系是不是已经很混乱了,第一次接触的时候,很容易把自己绕进去,然后就不知道代码该怎么写了,,,
其实,大家可以换一个角度来考虑问题,
首先,创建学校,学校跟什么有关,什么条件下可以创建学校,学校内包括什么,
第一,老师,第二,学生,第三,班级,
1 class School(object): 2 3 def __init__(self, school_name, city_name): 4 self.school_name = school_name 5 self.city_name = city_name 6 self.school_lesson = {} 7 self.school_classroom = {} 8 self.school_teacher = {} 9 self.school_student = {}
这些都要以实例的形式存下来,放到字典中,
其次,就是老师的问题,同样,老师是怎么来的,什么条件下可以创建老师,
第一,老师是需要自己去创建的,根据自己的情况,去选择学校,
第二,老师决定了自己是哪个班级的老师,也就是大家上学时候遇到的分班,
第三,老师可以修改自己学生的成绩,这是老师的能力
1 class Teacher(object): 2 def __init__(self, teacher_name): 3 self.teacher_name = teacher_name 4 self.teach_class = {} 5 6 def add_class(self, class_name, class_obj): 7 self.teach_class[class_name] = class_obj 8 9 def modify_student_score(self, teacher_name, student_name, student_score): 10 '''Modify student's score''' 11 teacher_obj = self.school_teacher[teacher_name] 12 for key in teacher_obj.teach_class: 13 class_obj = self.school_classroom[key] 14 student_list = class_obj.class_student[key] 15 if student_name in student_list: 16 self.school_student[student_name] = student_score 17 print('Modify score successful') 18 else: 19 print('The teacher not teach this student')
依此类推,大家就知道学生是怎么回事了,首先要明确,学生是怎么来的,学生可以做哪些事情,,,
慢慢地,我们的第一个面向对象编程起步了,思路清晰了,
先写到这,,,