在前面我们用很多Python语法做了很多编码案例那些都是面向过程的编程就是把一个需求分解成一系列要执行的步骤然后按照步骤依次执行这些任务关注的是流程、步骤适合简单线性的任务这篇主要是讲面向对象编程比如我们要盖一个房子我们的过程就是平地基、打桩、浇水泥、施工、硬装、软装一、面向对象的解释1、介绍面向对象把对象可以理解为具体的人/事的属性和方法打包到一起是面向对象的基本单元2、案例解释还是那个盖房子的案例我们盖房子的拖拉机、水泥机、施工工人、材料等都可以是对象拖拉机的属性 颜色、油耗、马力 功能 挖土水泥机的属性容量、颜色 功能存储水泥和搅拌水泥工人的属性工种、年龄、技能 功能焊接、搬运材料的属性类型、数量、价格、材质 功能铺贴、存储面向对象关注的是谁能帮我来干这件事二、类和实例1、介绍·类描述的是一组具有相同属性特征和方法功能/行为的模板如:月饼模具·对象对象是类的实例是基于类创建出来的实例对象如用模具做出来的各种月饼·实例化创建对象的过程一个类可以创建无数个对象2、类的定义1命名遵循大驼峰命名法每个单词的首字母大写单词之间没有分隔符如UserInfo2定义类的语法class 类名def __init__(self,参数列表)self.属性名 参数值self.属性名 参数值#创建对象对象名 类名参数列表def定义在类的外面叫函数定义在类的里面叫类的方法案例__dict__:python中用户自定义类实例的一个特殊属性。用于以字典形式存储对象属性__init__:初始化方法对象创建后自动调用主要用于设置对象的初始状态对象属性self :3、类中实例方法的定义和之前的函数定义方法是一样的class 类名def __init__(self,形参列表)self.属性名 参数值self.属性名 参数值def 方法名self形参列表.....对象名 类名参数列表对象名.方法名参数列表案例class Car: def __init__(self, b,c,p): self.brand b self.color c self.price p def show(self,g): print(f{self.brand}有{g}功能) def show2(self,coupon): return self.price - coupon c1 Car(BMW,Black,50000) print(c1.__dict__) c1.show(自动驾驶) print(f{c1.brand}的售价是{c1.show2(2000)}) #BMW有自动驾驶功能 #BMW的售价是480004、魔方方法1介绍Python中提供的以双下划线开头和结尾的特殊方法用于定义特殊行为,如:__init__2魔方方法不用手动调用Python会在合适的时机自动调用魔法方法描述__init__初始化方法__str__字符串表示方法__eq__比较两个对象是否相等__lt__,__le__,__gt__,__ge__支持比较两个对象的大小less than小于等于less than or equal大于greater than大于等于greater than or equalclass Car: def __init__(self, name, price): self.name name self.price price def func1(self,func): print(f{self.name}可以{func}) def __str__(self): return f{self.name}{self.price} def __eq__(self,other): return self.price other.price and self.name other.name def __le__(self,other): return self.price other.price car1 Car(BMW,500000) car2 Car(BMW,500000) print(car1) #在这里不需要专门去调用__str__方法系统会自动调用 print(car1 car2) #True print(car1 car2)5、属性1· 实例属性属于每个对象的属性每个对象都是独立的各个对象特有的属性2· 类属性属于类本身的属性所有实例共享所有对象共享的数据或配置通过实例查找属性时会优先查找实例属性实例属性不存在时再查找类属性三、案例采用面向对象的编程思想完成教务管理系统的开发。教务管理系统可以管理在校学生的成绩信息通过控制台菜单与用户交互具体的功能如下1、添加学生成绩根据学生输入的姓名、语文成绩、数学成绩、英语成绩记录在系统中2、修改学生成绩根据输入的学生姓名修改对应的学生成绩3、删除学生成绩根据输入的学生姓名查找对应的学生成绩4、查询指定的学生成绩根据输入的学生姓名查找对应的学生成绩并输出5、展示出系统中所有学生的成绩import os os.environ[PYTHONIOENCODING] utf-8 class Student: def __init__(self,name,Chinese,Math,English): self.name name self.Chinese Chinese self.Math Math self.English English def update(self,Chinese,Math,English): self.Chinese Chinese self.Math Math self.English English def __str__(self): return f{self.name}的语文成绩是{self.Chinese};数学成绩是{self.Math};英语成绩是{self.English} class Jiaow_Xitong: def __init__(self): self.Student_list [] #添加学生信息 def add_ach(self): name input(请输入学生姓名) for s in self.Student_list: if s.name name: print(该学生已存在) return chinese float(input(请输入语文成绩)) math float(input(请输入数学成绩)) english float(input(请输入英语成绩)) if 100 chinese 0 and 100 math 0 and 100 english 0: print(输入的成绩不在合理范围) return else: stu Student (name, chinese,math,english) self.Student_list.append(stu) print(添加成功) #修改学生信息 def alter_ach(self): name input(请输入学生姓名) for s in self.Student_list: if s.name name: chinese float(input(请输入要修改的语文成绩)) math float(input(请输入要修改的数学成绩)) english float(input(请输入要修改的英语成绩)) if 100 chinese 0 and 100 math 0 and 100 english 0: print(输入的成绩不在合理范围) return else: s.update(chinese,math,english) print(修改成功) return print(您输入的学生不存在) #删除学生信息 def del_s(self): name input(请输入学生姓名) for s in self.Student_list: if s.name name: self.Student_list.remove(s) return print(您输入的学生不存在) #查询指定的学生成绩 def Seek(self): name input(请输入目标学生的姓名) for s in self.Student_list: if s.name name: print(s) return print(该学生不存在) #展示系统中学生的成绩 def show(self): for s in self.Student_list: print(s) #运行系统 def run(self): print(欢迎使用教务管理系统\n1添加学生信息\n2:修改学生信息:\n3、查询指定的额学生成绩\n4、展示系统中学生的成绩\n5、删除学生\n6、退出系统) while True: a int(input(请输入你要进行的操作)) match a: case 1: self.add_ach() case 2: self.alter_ach() case 3: self.Seek() case 4: self.show() case 5: self.del_s() case 6: break case _: print(输入错误) if __name__ __main__: edu Jiaow_Xitong() edu.run()