python 菜鸟教程 面向对象,python是面向过程还是面向对象
本文将针对类进行一次综合练习,利用所学的面向对象编程和类的知识,将面向函数写作的学生信息库重构为面向对象的方式。有兴趣的可以看看。
还记得上一章关于函数的“函数的定义和使用”一章吗?今天我们将进行一次面向类的综合练习,利用我们所学的面向对象编程和类的知识,将面向函数写作的学生信息库重构为面向对象的方式。
重构是对代码设计和结构的重新修改和发展。上次我们都是通过函数来开发的,其实都是为了一个大目标而开发的。是学生目标管理,所以目标是一样的,可以在一个班里发展。
今天,我们有两个目的。一是将面向功能的学生信息数据库转化为面向对象的学生信息数据库。二是实现批量增删改和模糊搜索功能。
代码示例如下:
#编码:utf-8
@Author:Neo
@Date:2020/1/15
@Filename:students_info.py
@Software:Pycharm
班级学生信息(对象):
def __init__(self,students):
学生=学生
定义get_by_id(self,student_id):
返回self.students.get(student_id)
def get_all_students(自己):
对于id_,self.students.items()中的值为:
打印(学号:{},姓名:{},年龄:{},性别:{},班级3360{} 。格式(
id_,值[姓名],值[年龄],值[性别],值[班级编号]
))
回归自我。学生
定义添加(自己,* *学生):
check=self . check _ user _ info(* *学生)
如果检查!=True:
打印(检查)
返回
自我。_ _添加(* *学生)
def添加(自己,新_学生):
对于新生中的学生:
check=self . check _ user _ info(* *学生)
如果检查!=True:
print(check,student.get(name ))
继续
自我。_ _添加(* *学生)
def __add(自己,* *学生):
new_id=max(自我学生)1
self.students[new_id]=学生
定义删除(自己,学生标识):
如果student_id不在自身中
打印(({}不存在)。格式(学生id))
else:
user _ info=self . students . pop(student _ id)
打印(学号为{},已删除{}同学信息。格式(学生标识,用户信息[姓名]))
定义删除(自身,ids):
对于id_ in ids:
如果id_ not in self.students
打印(f{id_}在学生图书馆中不存在)
继续
student _ info=self . students . pop(id _)
打印(f student ID _ } student { student _ info[ name ]}已被删除)
定义更新(self,student_id,**kwargs):
如果student_id不在自身中
打印(此学号3360不存在{
}.format(student_id))
check = self.check_user_info(**kwargs)
if check != True:
print(check)
return
self.students[student_id] = kwargs
print(同学信息更新完毕)
def updates(self, update_students):
for student in update_students:
id_ = list(student.keys())[0]
if id_ not in self.students:
print(f学号{id_} 不存在)
continue
user_info = student[id_]
check = self.check_user_info(**user_info)
if check != True:
print(check)
continue
self.students[id_] = user_info
print(所有用户信息更新完成)
def search_users(self, **kwargs):
values = list(self.students.values())
key = None
value = None
result = []
if name in kwargs:
key = name
value = kwargs[key]
elif sex in kwargs:
key = sex
value = kwargs[sex]
elif class_number in kwargs:
key = class_number
value = kwargs[key]
elif age in kwargs:
key = age
value = kwargs[key]
else:
print(没有发现搜索的关键字)
return
for user in values: # [{name, sex, age, class_number}, {}]
if value in user[key]:
result.append(user)
return result
def check_user_info(self, **kwargs):
if name not in kwargs:
return 没有发现学生姓名
if age not in kwargs:
return 缺少学生年龄
if sex not in kwargs:
return 缺少学生性别
if class_number not in kwargs:
return 缺少学生班级
return True
students = {
1: {
name: Neo,
age: 18,
class_number: A,
sex: boy
},
2: {
name: Jack,
age: 16,
class_number: B,
sex: boy
},
3: {
name: Lily,
age: 18,
class_number: A,
sex: girl
},
4: {
name: Adem,
age: 18,
class_number: C,
sex: boy
},
5: {
name: HanMeiMei,
age: 18,
class_number: B,
sex: girl
}
}
if __name__ == __main__:
student_info = StudentInfo(students)
user = student_info.get_by_id(1)
student_info.add(name=Marry, age=16, class_number=A, sex=girl)
users = [
{name: Atom, age: 17, class_number: B, sex: boy},
{name: Lucy, age: 18, class_number: C, sex: girl}
]
student_info.adds(users)
student_info.get_all_students()
print(------------------------------------------------------)
# >>> 执行结果如下:
# >>> 学号:1, 姓名:Neo, 年龄:18, 性别:boy, 班级:A
# >>> 学号:2, 姓名:Jack, 年龄:16, 性别:boy, 班级:B
# >>> 学号:3, 姓名:Lily, 年龄:18, 性别:girl, 班级:A
# >>> 学号:4, 姓名:Adem, 年龄:18, 性别:boy, 班级:C
# >>> 学号:5, 姓名:HanMeiMei, 年龄:18, 性别:girl, 班级:B
# >>> 学号:6, 姓名:Marry, 年龄:16, 性别:girl, 班级:A
# >>> 学号:7, 姓名:Atom, 年龄:17, 性别:boy, 班级:B
# >>> 学号:8, 姓名:Lucy, 年龄:18, 性别:girl, 班级:C
# >>> ------------------------------------------------------
student_info.deletes([7, 8])
student_info.get_all_students()
print(------------------------------------------------------)
# >>> 执行结果如下:
# >>> ------------------------------------------------------
# >>> 学号7 学生Atom 已被移除
# >>> 学号8 学生Lucy 已被移除
# >>> 学号:1, 姓名:Neo, 年龄:18, 性别:boy, 班级:A
# >>> 学号:2, 姓名:Jack, 年龄:16, 性别:boy, 班级:B
# >>> 学号:3, 姓名:Lily, 年龄:18, 性别:girl, 班级:A
# >>> 学号:4, 姓名:Adem, 年龄:18, 性别:boy, 班级:C
# >>> 学号:5, 姓名:HanMeiMei, 年龄:18, 性别:girl, 班级:B
# >>> 学号:6, 姓名:Marry, 年龄:16, 性别:girl, 班级:A
# >>> ------------------------------------------------------
student_info.updates([
{1: {name: Jone, age: 18, class_number: A, sex: boy}},
{2: {name: Nike, age: 18, class_number: A, sex: boy}}
])
student_info.get_all_students()
print(------------------------------------------------------)
# >>> 执行结果如下:
# >>> ------------------------------------------------------
# >>> 所有用户信息更新完成
# >>> 学号:1, 姓名:Jone, 年龄:18, 性别:boy, 班级:A
# >>> 学号:2, 姓名:Nike, 年龄:18, 性别:boy, 班级:A
# >>> 学号:3, 姓名:Lily, 年龄:18, 性别:girl, 班级:A
# >>> 学号:4, 姓名:Adem, 年龄:18, 性别:boy, 班级:C
# >>> 学号:5, 姓名:HanMeiMei, 年龄:18, 性别:girl, 班级:B
# >>> 学号:6, 姓名:Marry, 年龄:16, 性别:girl, 班级:A
# >>> ------------------------------------------------------
result = student_info.search_users(name=d)
print(result)
print(------------------------------------------------------)
# >>> 执行结果如下:
# >>> [{name: Adem, age: 18, class_number: C, sex: boy}]
result = student_info.search_users(name=小)
print(result)
print(------------------------------------------------------)
# >>> 执行结果如下:
# >>> ------------------------------------------------------
# >>> []
# >>> ------------------------------------------------------
result = student_info.search_users(name=)
print(result)
result = student_info.search_users(name=小)
print(result)
print(------------------------------------------------------)
# >>> 执行结果如下:
# >>> ------------------------------------------------------[{name: Jone, age: 18, class_number: A, sex: boy}, {name: Nike, age: 18, class_number: A, sex: boy}, {name: Lily, age: 18, class_number: A, sex: girl}, {name: Adem, age: 18, class_number: C, sex: boy}, {name: HanMeiMei, age: 18, class_number: B, sex: girl}, {name: Marry, age: 16, class_number: A, sex: girl}]
# >>> []
result = student_info.search_users(name=)
print(result)
到此这篇关于Python学习之面向函数转面向对象详解的文章就介绍到这了,更多相关Python 面向函数 面向对象内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。