2026/8/4 3:20:25

Python 面向对象三大基础:封装、组合、继承

Python 面向对象三大基础:封装、组合、继承 一、封装把数据和配套操作打包放一块先说封装最简单一句话东西和操作它的方法塞到同一个类里不让外面随便乱改数据。拿我们写的Student学生类举例子 学生有学号、名字、年龄、性别这些信息这是 “数据”还有查询学生、修改学生信息、打印学生信息的函数这是 “操作”。 以前写代码可能把名字、年龄单独放变量改年龄、查名字单独写函数乱七八糟散得到处都是。封装之后全部装进Student这个类里面一个学生就是一个完整对象。配套的StudentManage也是封装思路所有添加、删除、修改学生的功能全放这个类不用到处找零散代码。 好处特别实在想改学生相关功能只找这一个类就行不会牵一发而动全身改乱别的代码。二、组合把别的类当成自己的 “配件”组合和继承经常搞混我分清楚了组合是我里面装别人是 “拥有” 关系。参考课本里汽车、人的例子一个人拥有一辆车、一张身份证、一把武器所以Person类里面直接放Car、Card、Weapon的实例这就是组合。放到我们的成绩管理系统里更好理解 总控类SystemManage里面写了三行代码self.student_manage StudentManage() self.course_manage CourseManage() self.score_manage ScoreManage()系统 “拥有” 学生管理、课程管理、成绩管理三个工具类想要添加学生就调用self.student_manage里的方法这就是标准组合写法。没有组合的话所有菜单、增删学生、录入成绩代码全堆在一个大类里几百行挤在一起找功能能看花眼三、继承子类复刻老爸还能自己加新本事继承是 “父子关系”儿子能直接拿走父亲所有属性和功能还能自己新增、改写方法。课本里Person是父类普通人有姓名、年龄能打印个人信息SuperPerson是子类除了拥有普通人全部东西额外多了技能属性。 用super().__init__()调用父类构造方法不用重复写姓名、年龄代码少写超多重复内容。 还能重写父类的get_info、__str__方法在原有基础上追加子类独有的内容不用完全重写一遍。四、三者结合我们的学生成绩系统就是完整案例我们写的系统严格拆了 7 个类刚好把封装 组合全部用上实体类Student/Course/Score纯封装只存对应数据重写打印方法管理类StudentManage/CourseManage/ScoreManage封装所有增删改查操作SystemManage总控类用组合把三个管理类装在内部统一调度菜单。