前言:
作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹
💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步
💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬
如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦
文章目录
python面向对象实例:重构学生信息库
任务要求:
用面向对象的编程思想重构学生信息库;
添加批量新增学生、批量删除学生的功能;
将查找学生信息功能修改为模糊查找;
参考思路:
第一步:将学生信息库的所有方法封装到一个类StudentsInfo
中
第二步:新增构造函数,定义属性self.students
第三步:将方法添加self参数(类函数必须包含self参数,且放在第一位),里面用到的students
变量也需要添加self.
第四步:批量的方法使用for循环,循环内调用单个的方法即可
第五步:模糊查找使用成员运算符in not in
第六步:实例化对象,调用类中的方法。
参考代码:
# coding:utf-8
'''
学生信息库
'''
class StudentsInfo(object):
def __init__(self, students):
self.students = students
# 获取全部学生信息
def get_all(self):
for id_, value in self.students.items():
print('学号:{} 姓名:{} 年龄:{} 性别:{} 班级:{}'.format(
id_, value['name'], value['age'], value['sex'], value['class_number']))
return self.students
# 新增学生
def add(self, **kwargs):
if 'name' not in kwargs:
print('缺少学生姓名')
return
if 'age' not in kwargs:
print('缺少学生年龄')
return
if 'sex' not in kwargs:
print('缺少学生性别')
return
if 'class_number' not in kwargs:
print('缺少学生班级')
return
id_ = max(self.students.keys()) + 1 # 定义新增的学生学号
self.students[id_] = kwargs
# 批量新增学生
def adds(self, new_students):
for student in new_students:
self.add(**student)
# 删除学生
def delete(self, student_id):
if student_id not in self.students.keys():
print('不存在这个学号{}的学生'.format(student_id))
return
self.students.pop(student_id)
# 批量删除学生
def deletes(self, *studens_id):
for student_id in studens_id:
if student_id not in self.students.keys():
print('不存在这个学号{}的学生'.format(student_id))
continue
else:
students_info = self.students.pop(student_id)
print('学号是{},{}同学的信息已经被删除了'.format(student_id, students_info['name']))
def search_by_id(self, student_id):
if student_id not in self.students.keys():
print('不存在这个学号{}的学生'.format(student_id))
return
print(self.students[student_id])
def search(self, **kwargs):
values = list(self.students.values())
result = []
for item in values:
if 'name' in kwargs:
if kwargs['name'] in item['name']:
result.append(item)
elif 'age' in kwargs:
if kwargs['age'] == item['age']:
result.append(item)
elif 'sex' in kwargs:
if kwargs['sex'] == item['sex']:
result.append(item)
elif 'class_number' in kwargs:
if kwargs['class_number'] == item['class_number']:
result.append(item)
else:
return None
return result
students = {
1: {'name': 'xiaoming',
'age': 18,
'sex': 'boy',
'class_number': 'A'
},
2: {'name': 'xiaobai',
'age': 19,
'sex': 'girl',
'class_number': 'B'
},
3: {'name': 'xiaokuai',
'age': 19,
'sex': 'boy',
'class_number': 'A'
},
4: {'name': 'xiaoman',
'age': 20,
'sex': 'girl',
'class_number': 'C'
}
}
new_students = [
{'name': 'aa',
'age': 19,
'sex': 'girl',
'class_number': 'C'
},
{'name': 'bb',
'age': 19,
'sex': 'girl',
'class_number': 'C'
}
]
if __name__ == '__main__':
student = StudentsInfo(students=students)
student.get_all()
student.add(name='xiaogao', age=18, sex='boy', class_number='B')
print('新增一个学生后-----')
student.get_all()
student.delete(2)
print('删除一个学生后-----')
student.get_all()
print('查询学号为3的学生-----')
student.search_by_id(3)
print('查找年龄为18的学生-----')
print(student.search(age=19))
student.adds(new_students)
print('批量新增后-----')
student.get_all()
student.deletes(6, 7)
print('批量删除后-----')
student.get_all()
print('模糊查找学生信息-----')
print(student.search(name='m'))