面向对象与面向过程

发布时间:2026/8/6 19:12:03

面向对象与面向过程
目录类与对象类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个简单方法解决复杂任务编排难题

2026/8/6 19:12:03

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

3个步骤搞定分子动力学自由能计算:gmx_MMPBSA完整指南

3个步骤搞定分子动力学自由能计算:gmx_MMPBSA完整指南

2026/8/6 19:12:03

3个步骤搞定分子动力学自由能计算:gmx_MMPBSA完整指南 【免费下载链接】gmx_MMPBSA gmx_MMPBSA is a new tool based on AMBERs MMPBSA.py aiming to perform end-state free energy calculations with GROMACS files. 项目地址: https://gitcode.com/gh_mirrors/…

未婚公证书线上办理需要几天?材料准备+避坑点一次说清

未婚公证书线上办理需要几天?材料准备+避坑点一次说清

2026/8/6 19:12:03

不少人突然接到办未婚公证书的通知,要么是要办海外签证、房产过户,要么是处理异地相关手续,急着用却摸不清流程,跑线下排队大半天还怕材料漏带。其实现在不用特意请假跑窗口,在微信或支付宝搜“慧办好”公证小程序&…

PyTorch深度学习入门笔记(小土堆)P26-32

PyTorch深度学习入门笔记(小土堆)P26-32

2026/8/6 19:52:05

PyTorch深度学习入门笔记P26-32 ZZHow(ZZHow1024) 参考课程: 【PyTorch深度学习快速入门教程【小土堆】】 [https://www.bilibili.com/video/BV1hE411t7RN] P26. 完整的模型训练套路(一) 训练部分 model.py import torch from torch im…

软考网络工程师|第 5 章 TCP/UDP 完整备考笔记

软考网络工程师|第 5 章 TCP/UDP 完整备考笔记

2026/8/6 19:52:05

一、TCP 与 UDP 基础对比★★★★1 核心特性总览维度TCP(传输控制协议)UDP(用户数据报协议)连接属性面向连接,传输前建立连接无连接,直接发送报文可靠性可靠传输,重传、确认、有序不可靠尽力交付…

2026年青岛做城市生命线安全工程建设的厂家有哪些?

2026年青岛做城市生命线安全工程建设的厂家有哪些?

2026/8/6 19:52:05

青岛是沿海城市,地下管线规模大,燃气、供水管网建设标准高,汛期防潮防涝压力较大。海风带来的高湿盐雾环境对监测设备提出了特殊要求,既要防得住潮气,也要测得准管网数据,城市生命线安全工程的需求稳定而务…

2026年合肥做城市生命线安全工程建设的厂家有哪些?

2026年合肥做城市生命线安全工程建设的厂家有哪些?

2026/8/6 19:52:05

合肥作为长三角副中心城市,城市规模快速扩张,燃气管网、排水管网延伸迅速。作为「清华方案合肥模式」的诞生地,合肥在城市生命线安全工程建设上起步早、标准高,燃气、桥梁、供水、排水等专项监测的需求持续释放,示范效…

UE5 UpdateOverlaps源码解析:重叠检测机制与实战优化

UE5 UpdateOverlaps源码解析:重叠检测机制与实战优化

2026/8/6 19:52:05

1. 项目概述:为什么我们需要深入理解UpdateOverlaps?在虚幻引擎5(UE5)里做游戏,尤其是涉及到战斗、交互、物理模拟这些核心玩法时,你肯定绕不开一个词:重叠(Overlap)。无…

揭秘GitStalk核心组件:用户资料模块与活动流处理的实现细节

揭秘GitStalk核心组件:用户资料模块与活动流处理的实现细节

2026/8/6 19:42:05

揭秘GitStalk核心组件:用户资料模块与活动流处理的实现细节 【免费下载链接】gitstalk Discover whos upto what on Github 项目地址: https://gitcode.com/gh_mirrors/gi/gitstalk GitStalk是一款专注于分析GitHub用户活动的Web应用,核心功能是帮…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/6 19:19:00

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/5 6:02:27

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/5 8:19:55

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

Unity相机抖动插件Camera-Shake集成与应用实战指南

Unity相机抖动插件Camera-Shake集成与应用实战指南

2026/8/6 0:00:51

1. 项目概述与核心价值最近在做一个动作游戏,需要给主角的重击和爆炸场景加点料,让打击感更足。我第一时间就想到了给相机加个抖动效果,毕竟这是提升玩家沉浸感最简单直接的手段之一。自己手写一个也不是不行,但时间成本高&#x…

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

2026/8/6 0:00:51

1. 项目概述:为什么需要一份3.7版本的专属适配指南?如果你是一位使用Cocos Creator开发微信小游戏的开发者,并且项目正运行在3.7版本上,那么你很可能已经感受到了那份“甜蜜的烦恼”。一方面,Cocos Creator 3.7是一个功…

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

2026/8/6 0:00:51

1. 项目概述:一次开源AI编程课程的深度重构 最近,我把自己的开源AI编程课程《Claude Code》做了一次从里到外的大更新。如果你对利用Claude、Codex这类大模型来辅助编程感兴趣,或者正在寻找一个能跟上最新AI编码工具迭代节奏的学习路径&#…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/6 5:43:30

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/4 14:25:14

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/4 15:11:03

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…