Python
基础语法
01概念
02安装
03变量
04字符串
05数
06常量与注释
07列表
08元组
09if语句
10字典
11集合
12复合数据类型对比
13推导式
14用户输入
15while循环
16函数
17类
18面向对象编程
19文件操作
20异常处理
21日期和时间
22魔术方法
23内置函数
24线程
25并发&并行
26正则表达式
27迭代器
28装饰器
29生成器
30上下文管理器
31函数式编程
32闭包
33解包
34工具库
35连接关系型数据库
36虚拟环境
37异步编程
网络爬虫
01urllib库[了解]
02requests库
03数据交换格式
04解析库
05lxml
06Beautiful Soup
07Xpath语法
08动态网页的处理
-
+
首页
18面向对象编程
**面向对象编程(Object-Oriented Programming,简称 OOP)** 是一种以 “对象” 为核心的编程范式,它将现实世界中的实体抽象为 “对象”,每个对象包含**数据(属性)** 和**操作数据的行为(方法)**,并通过对象之间的交互完成程序逻辑。 OOP 的核心思想是 “**模拟现实世界**”,通过封装、继承、多态等特性,实现代码的模块化、复用性和可维护性,尤其适合复杂系统的开发。 ## 核心思想 在 OOP 中,“对象” 是程序的基本单元,对应现实世界中的实体(如 “人”“汽车”“订单” 等)。每个对象具有两个核心要素: - **属性(Attribute)**:对象的状态数据(如 “人” 的姓名、年龄;“汽车” 的颜色、速度)。 - **方法(Method)**:对象的行为或操作(如 “人” 的 “说话”“走路”;“汽车” 的 “加速”“刹车”)。 OOP 通过 “对象” 将数据和操作数据的方法**捆绑在一起**,使程序结构更贴近现实世界的逻辑,而非面向过程编程(以 “步骤 / 函数” 为中心)的线性流程。 ## 核心特性 OOP 的强大之处在于其四大核心特性,这些特性共同支撑了代码的复用、扩展和维护: ## 抽象 抽象(Abstraction):提取本质,忽略细节。 抽象是指**忽略次要信息,提取实体的核心特征**,形成对 “一类事物” 的通用描述(即 “类”)。 - 例如:现实中的 “汽车” 有无数细节(品牌、材质、零件等),但抽象为 “汽车类” 时,只需关注核心属性(颜色、速度)和方法(加速、刹车)。 - 作用:简化问题复杂度,聚焦关键逻辑(用户只需知道 “汽车能加速”,无需知道加速的具体机械原理)。 ## 封装 封装(Encapsulation):隐藏细节,暴露接口。 封装是指将对象的**属性(数据)和方法(操作)捆绑在类中**,并通过**访问控制**隐藏内部实现细节,只暴露必要的接口(方法)供外部使用。 核心原则:“**数据隐藏,接口公开**”。 实现方式:通过 “访问修饰符”(如 Python 的私有属性__xxx)限制外部直接修改内部数据,仅允许通过预设方法(如getter/setter)操作。 作用: - 保护数据安全性(防止外部随意修改内部状态); - 降低耦合度(外部只需依赖接口,无需关心内部实现)。 例如: ```python class BankAccount: def __init__(self, balance): self.__balance = balance # 私有属性(隐藏细节) # 公开接口:查询余额 def get_balance(self): return self.__balance # 公开接口:存款(包含校验逻辑) def deposit(self, amount): if amount > 0: # 内部校验(外部无需关心) self.__balance += amount ``` 外部无法直接修改__balance,只能通过deposit方法(接口)操作,确保了数据安全。 ## 继承 继承(Inheritance):复用代码,扩展功能。 继承是指**子类(派生类)可以复用父类(基类)的属性和方法**,同时可以添加新属性 / 方法或修改父类方法(称为 “重写”),实现代码复用和功能扩展。 核心逻辑:“**站在巨人的肩膀上**”,避免重复编写相同代码。 术语: - 父类(基类):被继承的类(如 “动物”); - 子类(派生类):继承父类的类(如 “猫”“狗”)。 例如: ```python class Animal: # 父类 def __init__(self, name): self.name = name def eat(self): # 父类方法 print(f"{self.name}在吃东西") class Cat(Animal): # 子类继承Animal # 重写父类方法(扩展功能) def eat(self): print(f"{self.name}(猫)在吃小鱼干") # 新增子类特有方法 def meow(self): print(f"{self.name}喵喵叫") # 子类复用父类属性和方法 cat = Cat("汤姆") cat.eat() # 输出:汤姆(猫)在吃小鱼干(调用重写的方法) cat.meow() # 输出:汤姆喵喵叫(子类特有方法) ``` 输出结果: ```python 汤姆(猫)在吃小鱼干 汤姆喵喵叫 ``` ## 多态 多态(Polymorphism):同一接口,不同实现。 多态是指**不同类的对象对同一方法名的调用,表现出不同的行为**,即 “接口一致,实现不同”。 核心逻辑:通过统一的接口(方法名)操作不同对象,无需关心对象的具体类型。 实现基础:继承(子类重写父类方法)或接口(不同类实现相同方法名)。 例如: ```python # 定义父类 Animal class Animal: def __init__(self, name): self.name = name # 定义名字属性 def eat(self): # 父类方法,可被子类重写 pass # 定义 Cat 子类,继承自 Animal class Cat(Animal): def eat(self): # 重写父类方法 print(f"{self.name}(猫)在吃小鱼干") # 定义 Dog 子类,继承自 Animal class Dog(Animal): def eat(self): # 重写父类方法 print(f"{self.name}(狗)在啃骨头") # 统一接口:接收任意 Animal 子类对象 def feed(animal): animal.eat() # 调用相同方法名,行为不同 # 多态体现:不同对象调用同一方法,结果不同 cat = Cat("汤姆") dog = Dog("旺财") feed(cat) # 输出:汤姆(猫)在吃小鱼干 feed(dog) # 输出:旺财(狗)在啃骨头 ``` 输出结果: ```python 汤姆(猫)在吃小鱼干 旺财(狗)在啃骨头 ``` ## 基本组成单元 OOP 的基本组成单元: - **类(Class)**:对象的 “模板” 或 “蓝图”,是对一类事物的抽象定义(包含属性和方法)。例如,“汽车类” 定义了所有汽车共有的属性(颜色、速度)和方法(加速、刹车)。 - **对象(Object/Instance)**:类的具体实例,是类的 “具体化”。例如,“一辆红色特斯拉” 是 “汽车类” 的一个对象,拥有具体的颜色(红色)和速度(60km/h)。 - **属性(Attribute)**:分为 “类属性”(所有对象共享,如 “人类” 的 “物种”)和 “实例属性”(每个对象独有,如 “张三” 的 “年龄”)。 - **方法(Method)**:类中定义的函数,分为 “实例方法”(操作实例属性)、“类方法”(操作类属性)和 “静态方法”(独立于类和实例的工具方法)。 ## OOP 与POP的对比 面向对象编程(OOP)和 面向过程编程(POP)的对比【简化版】 | 度 | 面向对象编程(OOP) | 面向过程编程(POP) | | -------- | ------------------------------------ | -------------------------------- | | 核心单元 | 对象(数据 + 方法) | 函数 / 步骤(仅操作数据) | | 设计思路 | 以 “实体” 为中心,模拟现实世界关系 | 以 “流程” 为中心,按步骤实现功能 | | 代码组织 | 模块化(类),耦合度低 | 线性化(函数堆叠),耦合度高 | | 复用性 | 高(继承、多态) | 低(主要靠函数复用) | | 适合场景 | 复杂系统(如 GUI、游戏、企业级应用) | 简单脚本(如数据处理、小工具) | ## 优势 **代码复用性高**:通过继承复用父类代码,减少重复开发。 **模块化强**:类作为独立模块,可单独开发、测试和维护,降低系统复杂度。 **可扩展性好**:通过新增子类或重写方法,轻松扩展功能(符合 “开放 - 封闭原则”)。 **可读性高**:代码结构贴近现实世界,逻辑清晰,便于理解和协作。 **维护成本低**:修改类的内部实现不影响外部调用(封装特性),降低修改风险。 ## 应用场景 OOP 是现代编程的主流范式,广泛应用于: - 大型软件系统(如操作系统、数据库); - 图形用户界面(GUI)开发(如 Python 的 Tkinter、Java 的 Swing); - 游戏开发(如角色、道具等实体的建模); - 企业级应用(如用户、订单等业务实体的管理); - 面向对象数据库(如 PostgreSQL 的面向对象支持)。 ## 总结 面向对象编程(OOP)是以 “对象” 为核心,通过**抽象、封装、继承、多态**四大特性,将数据和操作数据的方法捆绑,模拟现实世界实体及其关系的编程范式。它解决了复杂系统的代码复用、模块化和可维护性问题,是现代软件开发的基础思想。掌握 OOP,能更高效地设计和实现大型、复杂的程序。
毛林
2025年9月7日 11:45
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码