面向对象与面向过程
目录类与对象类Class定义类self 关键字“魔法方法”对象Object定义对象获取属性及调用方法面向对象Object-OrientedOO封装Encapsulation继承Inheritance多态Polymorphism抽象类与抽象方法面向对象的其它特征面向过程Procedural Programming面向对象与面向过程的区别类与对象类Class对一类具有相同属性和方法的对象的抽象描述属性(Attributes)描述对象的特征或状态也称为成员变量方法(Methods)描述对象的行为或功能也称为成员函数定义类class ClassName(object): attribute value # 定义类的属性变量 def __init__(self): self.attribute value # 定义实例的属性【self关键字只能在函数内】 def function(self): # 定义类的方法函数 passself 关键字代表 指向 类 的当前实例对象谁调用函数self就是谁为 实例方法 提供 访问该实例自身属性和方法 的 引用是类方法的第一个参数指向 调用该方法 的 实例对象“魔法方法”【在特殊情况下会被自动调用】def __init__(): 在定义 对象 时会被自动调用执行def __init__(self, color, number): self.color color self.number numberdef __str__(): 在输出打印 对象的属性 时会被自动调用执行def __str__(self): return self.attribute # 返回值的类型必须是字符串类型def __del__(): 在 对象的生命周期结束时被销毁 时会被自动调用执行def __del__(self): pass对象Object对象是类的实例是根据类创建的具体实体一个类可以创建多个对象定义对象variable ClassName()获取属性及调用方法在类内获取属性及调用方法self.attribute # self.属性 self.function() # self.函数名()在类外获取属性及调用方法variable.attribute # 变量名.属性 variable.function() # 变量名 . 函数名()面向对象Object-OrientedOO一种编程范式程序设计思想【一切皆对象】以对象为核心通过封装、继承、多态等机制组织和复用代码优点模块化、复用性、灵活性封装Encapsulation将数据属性和操作数据的方法行为绑定在一起 形成一个独立的对象对外隐藏内部实现细节仅暴露必要接口【封装不只对于类的封装也对于函数的封装】封装可以为属性和方法添加私有权限只能在类内访问【类外通过公共方法接口访问】class ClassName(object): def __init__(self, value): self.__attribute value # 定义私有属性 def __function(self): # 定义私有方法 return self.__attribute def function(self): # 定义公共方法对外提供接口 return self.__function() # 调用私有方法返回私有属性继承Inheritance多个类之间的所属关系子类派生类默认继承父类基类、超类的属性和方法单继承class ClassName(object): # 定义父类 attribute value def function(self): pass class Subclasses(ClassName): # 定义子类继承自父类 attribute value def function(self): pass多继承class ClassName(object): # 定义父类 attribute value def function(self): pass class SubclassesOne(ClassName): # 定义子类继承自父类 attribute value def function(self): pass class SubclassesTwo(ClassName, SubclassesOne): # 定义子类继承自两个父类 attribute value def function(self): pass子类调用父类方法class SubclassTwo(ClassName, SubclassesOne): ClassName.function() # 调用指定基类的函数 — 父类名.方法名(self) super().function() # 只能调用传入的第一个父类的函数子类调用父类的同名方法当一个类有多个父类时默认使用第一个父类的同名属性和方法具体调用顺序依据MRO可以使用 类名.__mro__ 或 类名.mro() 方法查看调用的先后顺序MRO(Method Resolution Order)方法解析顺序方法重写当 子类属性或方法 与 父类的属性或方法 名字相同 时 从父类继承下来的成员可以 重新定义多层继承指多个类之间的继承的层级关系多态Polymorphism同样一个函数在不同的场景下有不同的状态多态的条件1、有继承 定义父类、定义子类子类继承父类)2、函数重写 子类重写父类的函数3、父类引用指向子类对象 子类对象传给父类对象调用者class Bird: def fly(self): print(Bird can fly) class Penguin(Bird): def fly(self): print(Penguin cannot fly) class Eagle(Bird): def fly(self): print(Eagle can fly very high) def bird_flying_test(bird): bird.fly() bird Bird() penguin Penguin() eagle Eagle() bird_flying_test(bird) bird_flying_test(penguin) bird_flying_test(eagle)多态的优点提高代码的可扩展性和可维护性提高代码复用性 使程序更易于扩展和修改分离接口与实现抽象类与抽象方法抽象类含有 抽象方法 的 类抽象方法函数体是空实现的passclass ClassName(object): def function_one(self): pass def function_two(self): pass抽象类的核心特征1、必须包含抽象方法2、不能被实例化3、子类必须实现其抽象方法面向对象的其它特征类属性在类内部、方法外直接定义(变量名 值【类内函数外】类中所有对象共享该属性 当某一对象修改类属性时所有对象及类本身均受影响通过 类名.属性名 的方式访问推荐对象属性在函数中定义在 init 方法也属于函数或实例方法中通过 self. attribute的方式定义实例属性为某个对象所独有修改某个实例属性仅影响当前对象通过 对象名.属性名 的方式访问易与实例属性混淆类方法必须传入参数第一个参数 cls指向类本身装饰器classmethodclass ClassName(object): classmethod def function(cls): pass静态方法无需固定参数装饰器staticmethodclass ClassName(object): staticmethod def function(): pass面向过程Procedural Programming一种以过程Procedure为核心的编程范式核心思想自顶向下、逐步分解核心特点1、以函数为基本单元2、线性执行流程从主函数开始依次调用其它函数3、数据与操作分离4、自顶向下的设计面向对象与面向过程的区别面向过程以“过程”为中心将程序分解为一系列步骤或函数强调“如何做”。面向对象以“对象”为中心将数据和行为封装为对象强调“谁来做”。

相关新闻

如何实现ElasticJob任务依赖调度:5个简单方法解决复杂任务编排难题

如何实现ElasticJob任务依赖调度:5个简单方法解决复杂任务编排难题

如何实现ElasticJob任务依赖调度:5个简单方法解决复杂任务编排难题 【免费下载链接】shardingsphere-elasticjob Distributed scheduled job 项目地址: https://gitcode.com/gh_mirrors/shar/shardingsphere-elasticjob 你是否遇到过这样的问题:数…

2026/10/13 19:39:40 阅读更多 →
【软件系统架构案例分析 Day 9】性能战术:千万级QPS秒杀系统设计

【软件系统架构案例分析 Day 9】性能战术:千万级QPS秒杀系统设计

【Day 9】性能战术:千万级QPS秒杀系统设计 一、题目还原 某大型电商平台计划在"618"大促期间推出限量秒杀活动,预计活动开始瞬间将迎来千万级QPS的并发请求洪峰(历史最高峰值约1200万QPS),而常规业务峰值仅约…

2026/10/8 9:12:31 阅读更多 →
Windows软件总提示缺少DLL文件?VisualCppRedist AIO一键解决所有兼容性问题

Windows软件总提示缺少DLL文件?VisualCppRedist AIO一键解决所有兼容性问题

Windows软件总提示缺少DLL文件?VisualCppRedist AIO一键解决所有兼容性问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 还在为Windows系统上软件…

2026/10/12 11:39:07 阅读更多 →

最新新闻

基于Python的微博舆情分析与话题热度预测毕设实战指南

基于Python的微博舆情分析与话题热度预测毕设实战指南

简介:这份资源是面向计算机、电子信息工程、数学等专业大学生的课程设计或毕业设计参考资料,聚焦新浪微博#新冠疫情话题的舆情分析与话题热度预测。项目经导师指导并认可通过,适合作为大作业、期末课设或毕设的完整参考方案,帮助读…

2026/10/14 9:49:28 阅读更多 →
context-mode 上下文管理模式:设计选型、传播机制与工程实践

context-mode 上下文管理模式:设计选型、传播机制与工程实践

1. 从“context-mode”说起:一个被低估的工程概念第一次看到“context-mode”这个词,很多人会下意识地把它归到某个具体框架或库的配置项里去。但如果你在工程一线待过几年,就会发现它其实是一个跨语言、跨框架、跨场景的通用设计思路。简单说…

2026/10/14 9:49:28 阅读更多 →
沐问MuAsk:开源桌面版Text2SQL工具,本地优先的自然语言查数方案

沐问MuAsk:开源桌面版Text2SQL工具,本地优先的自然语言查数方案

直接从项目本身聊起吧。这两年“Text2SQL”项目我见了不少,GitHub上动不动就十来个星标的demo遍地都是,老实说大部分都是套个LLM外壳,跑通一条SELECT语句就算完事。直到我拿到“沐问 MuAsk”这个开源桌面版工具,才觉得终于有个能正…

2026/10/14 9:49:28 阅读更多 →
Codex与Claude代码生成的token优化实战指南

Codex与Claude代码生成的token优化实战指南

1. 项目概述:为什么“节省token”成了当前代码生成场景里的硬通货最近在多个技术社区和开发者群聊里,频繁看到“codex和claude code节省token的方式”这个短语被反复提起——它不像一个功能名称,倒更像一句实操口诀,一种经验总结&…

2026/10/14 9:49:28 阅读更多 →
机械控制电缆技术演进与智能制造应用趋势

机械控制电缆技术演进与智能制造应用趋势

1. 机械控制电缆行业现状与市场背景机械控制电缆作为工业自动化领域的"神经脉络",承担着设备间信号传输与电力分配的双重使命。在智能制造浪潮推动下,这个看似传统的细分领域正经历着技术迭代与市场扩张的双重变革。根据最新市场研究数据&…

2026/10/14 9:49:28 阅读更多 →
AnyPS5模拟器架构深度解析:从系统库翻译到着色器缓存

AnyPS5模拟器架构深度解析:从系统库翻译到着色器缓存

AnyPS5 这个项目,最早是在模拟器开发讨论区里看到有人贴出的一组截图:一台普通 PC 上,跑通了一个 PS5 自制测试程序,屏幕上打印出系统版本号字符串。当时很多人第一反应是不相信,直到作者把构建日志和配置文件贴出来&a…

2026/10/14 9:48:27 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →