作为初学者,很多时候习惯了面向程序编程,对于面向对象编程既熟悉又陌生...(开场白)

直接上上干货,我也是个初学者,之前只玩过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 = {}
View Code

这些都要以实例的形式存下来,放到字典中,

其次,就是老师的问题,同样,老师是怎么来的,什么条件下可以创建老师,

  第一,老师是需要自己去创建的,根据自己的情况,去选择学校,

  第二,老师决定了自己是哪个班级的老师,也就是大家上学时候遇到的分班,

  第三,老师可以修改自己学生的成绩,这是老师的能力

 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')
View Code

依此类推,大家就知道学生是怎么回事了,首先要明确,学生是怎么来的,学生可以做哪些事情,,,

慢慢地,我们的第一个面向对象编程起步了,思路清晰了,

先写到这,,,