Python 面向对象编程完全指南:从入门到精通

发布时间:2026/7/24 14:12:51
Python 面向对象编程完全指南:从入门到精通 大家好今天我们来深入学习 Python 面向对象编程OOP的核心知识。这篇文章涵盖了面向对象的基本概念、类的定义与使用、魔法方法、继承等核心内容通过丰富的案例帮助大家彻底掌握 OOP。 目录一、面向对象与面向过程二、面向对象三大特征三、类与对象入门四、self 关键字详解五、属性操作六、魔法方法七、继承八、综合案例九、总结一、面向对象与面向过程1.1 编程思想编程思想就是人们利用计算机来解决问题的思维方式。1.2 面向过程它是一种编程思想强调的是以步骤过程为基础完成各种操作。特点关注怎么做按照流程一步步执行适合简单、固定的任务1.3 面向对象它是一种编程思想强调的是以对象为基础完成各种操作它是基于面向过程的。思想特点✅更符合人们的思考习惯——用谁做了什么来思考问题✅把复杂的事情简单化——将大问题拆解成小对象✅把人从执行者变成指挥者——你指挥对象去干活举例说明买电脑面向过程自己查配置→去电脑城→比价→砍价→买回家面向对象找懂电脑的朋友对象→朋友帮你搞定一切洗衣服面向过程拿衣服→放水→加洗衣液→搓洗→漂洗→拧干→晾晒面向对象把衣服扔进洗衣机对象→按按钮→洗衣机帮你洗完总结万物皆对象二、面向对象三大特征2.1 封装概述隐藏对象的属性和实现细节仅对外提供公共的访问方式。举例电脑你不需要知道 CPU 怎么工作只需要用键盘鼠标操作手机你不需要知道内部电路只需要点屏幕函数你只需要调用不需要知道内部实现好处✅ 提高代码的安全性私有化✅ 提高代码的复用性函数封装2.2 继承概述子类继承父类的成员属性、行为等。大白话子承父业。好处✅ 提高代码的复用性2.3 多态概述大白话同一个事物在不同时刻表现出来的不同状态、形态专业版同一个函数接收不同的对象有不同的效果三、类与对象入门3.1 核心概念概念说明示例类抽象的概念是属性行为的集合汽车设计图对象类的具体体现、实例根据设计图造出来的汽车属性名词描述事物的外在特征颜色、品牌、价格行为动词描述事物能做什么跑、停、鸣笛3.2 定义类的格式class 类名: # 属性变量 # 行为函数3.3 入门案例汽车类 需求定义汽车类有跑的行为 # 1. 定义汽车类类名遵循大驼峰命名法 class Car: # 属性名词 # 行为动词 def run(self): print(汽车会跑) # 2. 创建汽车类的对象 c1 Car() # 3. 调用 Car 类的 run() 函数 c1.run() # 输出: 汽车会跑3.4 访问类中成员的格式# 1. 创建对象 对象名 类名() # 2. 通过 对象名. 的方式调用 对象名.属性名 对象名.行为名()四、self 关键字详解4.1 什么是 self概述self是 Python 内置的关键字用于表示本类当前对象的引用大白话谁调用函数self就代表谁4.2 self 的作用1 个类可以有多个对象这多个对象都可以通过对象名.的方式访问类中的行为函数。函数通过self来区分到底是哪个对象调用的该函数。class Car: def run(self): print(f汽车会跑self的值是: {self}) c1 Car() print(fc1对象: {c1}) c1.run() # self 指向 c1 c2 Car() print(fc2对象: {c2}) c2.run() # self 指向 c24.3 类内访问其他函数总结在类外访问类中的行为通过对象名.的方式在类内访问类中的行为通过self.的方式class Car: def run(self): print(f{self} 汽车在跑...) def work(self): print(f我是work函数self值: {self}) self.run() # 在类内访问其他函数用 self. c1 Car() c1.work() # 输出: 我是work函数... 汽车在跑...五、属性操作5.1 类外设置和获取属性class Car: def run(self): print(汽车会跑...) # 创建对象 c1 Car() # 类外设置属性独属于 c1 对象 c1.color 红色 c1.number 4 # 类外获取属性 print(f颜色: {c1.color}, 轮胎数: {c1.number}) # 输出: 颜色: 红色, 轮胎数: 45.2 类内获取对象的属性class Car: def run(self): print(汽车会跑) def show(self): # 在类内通过 self. 访问属性 print(f颜色: {self.color}, 轮胎数: {self.number}) c1 Car() c1.color 红色 c1.number 4 c1.show() # 输出: 颜色: 红色, 轮胎数: 4⚠️ 注意类外设置的属性只属于当前对象其他对象没有该属性。六、魔法方法6.1 什么是魔法方法魔法方法是 Python 内置的函数在满足特定的场景下会被自动调用。魔法方法触发时机__init__()创建对象时自动调用__str__()print(对象)时自动调用__del__()对象被销毁时自动调用6.2__init__()魔法方法构造方法无参版class Car: def __init__(self): print(我是无参 init 魔法方法) self.color 黑色 # 默认属性 self.number 3 def show(self): print(f颜色: {self.color}, 轮胎数: {self.number}) c1 Car() # 自动调用 __init__() c1.show() # 输出: 颜色: 黑色, 轮胎数: 3有参版推荐class Car: def __init__(self, color, number): 在创建对象时给属性赋值 self.color color self.number number def show(self): print(f颜色: {self.color}, 轮胎数: {self.number}) c1 Car(红色, 6) # 传入参数 c1.show() # 输出: 颜色: 红色, 轮胎数: 66.3__str__()魔法方法class Car: def __init__(self, color, number): self.color color self.number number def __str__(self): # 重写打印有意义的属性信息 return f颜色: {self.color}, 轮胎数: {self.number} c1 Car(绿色, 4) print(c1) # 自动调用 __str__()输出: 颜色: 绿色, 轮胎数: 46.4__del__()魔法方法class Car: def __init__(self, brand): self.brand brand def __str__(self): return f品牌: {self.brand} def __del__(self): print(f{self} 对象被删除了) c1 Car(小米 Su7 Ultra) print(c1) del c1 # 手动删除触发 __del__()七、继承7.1 继承入门概念说明继承子类继承父类的属性和行为子承父业子类/派生类继承别的类的类父类/基类/超类被继承的类好处提高代码的复用性弊端耦合性增强父类不好的内容子类也得有开发原则高内聚、低耦合7.2 继承的基本格式class 父类名: # 父类成员 class 子类名(父类名): pass # 子类自动拥有父类的所有成员7.3 单继承演示# 1. 定义师傅类 class Master: def __init__(self): self.kongfu [古法配方] def make_cake(self): print(f采用 {self.kongfu} 摊煎饼果子) # 2. 定义徒弟类继承师傅类 class Prentice(Master): pass # 3. 测试 p Prentice() p.make_cake() # 输出: 采用 [古法配方] 摊煎饼果子7.4 多继承演示class Master: def __init__(self): self.kongfu [古法配方] def make_cake(self): print(f运用 {self.kongfu} 制作煎饼果子) class School: def __init__(self): self.kongfu [AI配方] def make_cake(self): print(f运用 {self.kongfu} 制作煎饼果子) # 多继承从左往右就近原则 class Prentice(School, Master): pass xm Prentice() print(xm.kongfu) # 输出: [AI配方]School 的 xm.make_cake() # 输出: 运用 [AI配方] 制作煎饼果子7.5 MRO 机制MROMethod Resolution Order可以查看某个对象调用函数时的查找顺序print(Prentice.mro()) # Prentice - School - Master - object print(Prentice.__mro__) # 同上八、综合案例8.1 减肥案例 需求小明当前体重 100kg跑步一次减 0.5kg大吃大喝一次增 2kg class Student: def __init__(self): self.current_weight 100 def run(self): print(疯狂跑步...) self.current_weight - 0.5 def eat(self): print(大吃大喝一顿...) self.current_weight 2 def __str__(self): return f当前体重: {self.current_weight} kg! xm Student() xm.run() xm.run() xm.eat() print(xm) # 当前体重: 101.0 kg!8.2 烤地瓜案例 需求 1. 属性烘烤时间、烘烤状态、调料列表 2. 行为烘烤、添加调料 3. 规则 [0, 3) → 生的 [3, 7) → 半生不熟 [7, 12) → 熟了 [12, ∞] → 糊了 class SweetPotato: def __init__(self): self.cook_time 0 self.cook_state 生的 self.condiments [] def cook(self, time): self.cook_time time if 0 self.cook_time 3: self.cook_state 生的 elif 3 self.cook_time 7: self.cook_state 半生不熟 elif 7 self.cook_time 12: self.cook_state 熟了 else: self.cook_state 糊了 def add_condiment(self, condiment): self.condiments.append(condiment) def __str__(self): return f烘烤时间: {self.cook_time}, 状态: {self.cook_state}, 调料: {self.condiments} dg SweetPotato() dg.cook(3) dg.cook(5) dg.cook(7) dg.add_condiment(芥末) dg.add_condiment(折耳根) print(dg) # 烘烤时间: 15, 状态: 糊了, 调料: [芥末, 折耳根]九、总结9.1 核心知识点速记概念要点面向对象以对象为基础更符合人类思维三大特征封装、继承、多态类与对象类是图纸对象是实物self代表当前对象的引用__init__创建对象时自动调用初始化属性__str__print(对象)时自动调用__del__对象销毁时自动调用继承子类继承父类的属性和行为多继承从左往右就近原则9.2 创建类的三种格式# 格式1 class 类名: pass # 格式2 class 类名(): pass # 格式3推荐 class 类名(object): # object 是所有类的父类 pass9.3 访问方式总结位置访问方式类外对象名.成员类内self.成员最后提醒面向对象编程是 Python 的核心编程范式掌握好类与对象、继承、魔法方法等知识你就能写出更加优雅、可维护的代码。多敲代码、多实践自然就能熟练运用如果觉得有帮助欢迎点赞、收藏、评论