聊聊python中面向对象编程思想
面向对象编程思想
1、什么是面向过程
传统的面向过程的编程思想总结起来就八个字——==自顶向下,逐步细化!==
→ 将要实现的功能描述为一个从开始到结束按部就班的连续的“步骤”
→ 依次逐步完成这些步骤,如果某一个步骤的难度较大,又可以将该步骤再次细化为若干个子步骤,以此类推,一直到结尾并得到我们想要的结果
就是把要开发的系统分解为若干个步骤,每个步骤就是函数,当所有步骤全部完成以后,则这个系统就开发完毕了!
举个栗子:大家以来传智教育报名学习这件事情,可以分成哪些步骤?开始 → 学员提出报名,提供相关材料 → 学生缴纳学费,获得缴费凭证 → 教师凭借学生缴费凭证进行分配班级 → 班级增加学生信息 → 结束所谓的面向过程,就是将上面分析好了的步骤,依次执行就行了!
2、什么是面向对象
思考:上面的整个报名过程,都有哪些动词?
提出、提供、缴纳、获得、分配、增加
有动词就一定有实现这个动作的实体!
所谓的模拟现实世界,就是使计算机的编程语言在解决相关业务逻辑的时候,与真实的业务逻辑的发生保持一致,需要使任何一个动作的发生都存在一个支配给该动作的一个实体(主体),因为在现实世界中,任何一个功能的实现都可以看做是一个一个的实体在发挥其各自的“功能”(能力)并在内部进行协调有序的调用过程!
3、举个栗子:使用面向对象实现报名系统开发
☆ 第一步:分析哪些动作是由哪些实体发出的
学生提出报名
学生提供相关资料
学生缴费
机构收费
教师分配教室
班级增加学生信息
于是,在整个过程中,一共有四个实体:学生、机构、教师、班级!在现实中的一个具体的实体,就是计算机编程中的一个==对象==!
☆ 第二步:定义这些实体,为其增加相应的属性和功能
属性就是实体固有的某些特征特性信息,在面向对象的术语中,属性就是以前的变量。
比如
一个人的属性有:身高、体重、姓名、年龄、学历、电话、籍贯、毕业院校等
一个手机的属性有:价格、品牌、操作系统、颜色、尺寸等
功能就是就是实体可以完成的动作,在面向对象的术语中,功能就是封装成了函数或方法

☆ 第三步:让实体去执行相应的功能或动作
学生提出报名
学生提供相关资料
教师登记学生信息
学生缴费
机构收费
教师分配教室
班级增加学生信息
4、面向对象编程思想迁移
以前写代码,首先想到的是需要实现什么功能——调用系统函数,或者自己自定义函数,然后按部就班的执行就行了!
以后写代码,==首先想到的是应该由什么样的主体去实现什么样的功能,再把该主体的属性和功能统一的进行封装,最后才去实现各个实体的功能。==
注意:面向对象并不是一种技术,而是一种思想,是一种解决问题的最基本的思维方式!
所以,面向对象的核心思想是:==不仅仅是简单的将功能进行封装(封装成函数),更是对调用该功能的主体进行封装,实现某个主体拥有多个功能,在使用的过程中,先得到对应的主体,再使用主体去实现相关的功能!==
5、面向对象要比面向过程好?
一个面试题:面向过程和面向对象的区别?
① 都可以实现代码重用和模块化编程,面向对象的模块化更深,数据也更封闭和安全
② 面向对象的思维方式更加贴近现实生活,更容易解决大型的复杂的业务逻辑
③ 从前期开发的角度来看,面向对象比面向过程要更复杂,但是从维护和扩展的角度来看,面向对象要远比面向过程简单!
④ 面向过程的代码执行效率比面向对象高
相关文章:
聊聊python中面向对象编程思想
面向对象编程思想 1、什么是面向过程 传统的面向过程的编程思想总结起来就八个字——自顶向下,逐步细化! → 将要实现的功能描述为一个从开始到结束按部就班的连续的“步骤” → 依次逐步完成这些步骤,如果某一个步骤的难度较大ÿ…...
MySQL-视图:视图概述、使用视图注意点、视图是否影响基本表
视图 一、视图概述二、使用视图注意点三、视图操作是否影响基本表 一、视图概述 在数据库管理系统中,视图(View)是一种虚拟表,它并不实际存储数据,而是基于一个或多个实际表的查询结果。视图提供了一种对数据库中数据…...
鸿蒙开发(四)-低代码开发
鸿蒙开发(四)-低代码开发 本文主要介绍下鸿蒙下的低代码开发。 鸿蒙低代码是指在鸿蒙操作系统进行应用开发时,采用简化开发流程和减少编码量的方式来提高开发效率。 1:开启低代码开发 首先我们打开DevEco Studio .然后创建工程。 如图所示ÿ…...
BUU [网鼎杯 2020 半决赛]AliceWebsite
BUU [网鼎杯 2020 半决赛]AliceWebsite 开题: hint附件是源码。在index.php中有一个毫无过滤的本地文件包含 <?php $action (isset($_GET[action]) ? $_GET[action] : home.php); if (file_exists($action)) {include $action; } else {echo "File not…...
超越 Siri 和 Alexa:探索LLM(大型语言模型)的世界
揭秘LLM:语言模型新革命,智能交互的未来趋势 近年来,虚拟助手的世界发生了重大转变。 虽然 Siri 和 Alexa 本身就是革命性的,但一种称为大型语言模型 (LLM) 的新型人工智能正在将虚拟助手的概念提升到一个全新的水平。 在这篇博文…...
Linux删除Mysql
//rpm包安装方式卸载 查包名:rpm -qa|grep -i mysql 删除命令:rpm -e –nodeps 包名//yum安装方式下载 1.查看已安装的mysql 命令:rpm -qa | grep -i mysql 2.卸载mysql 命令:yum remove mysql-community-server-5.6.36-2.el7.x86…...
CNN中常见的池化操作有哪些,作用是什么?
CNN中常见的池化操作有哪些,作用是什么? CNN中常见的池化操作只要是两种,平均值池化和最大值池化最大值池化常用于分类任务,是指在输入数据的局部区域内取最大值作为输出。最大池化的作用是降低特征图的尺寸,减少参数…...
能打印单据的软件,如进出库单据,物流快运单据,定制单据样式
能打印单据的软件,如进出库单据,物流快运单据,定制单据样式 一、前言 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、不同行业打印的单据不同 2、同一个行业打印的样式可能不同 3、有的行业已经印刷好了许多打印…...
uniapp列表进入动画
app列表入场动画 - DCloud 插件市场 列表入场动画https://ext.dcloud.net.cn/plugin?id16957...
FPGA TestBench编写学习
1 timescale 1.1 简介 timescale指令用于指定编译器在处理仿真时的时间单位和时间精度。这个指令通常在模块的顶层声明中使用,它告诉编译器和仿真器如何解释代码中的时间值。 timescale指令的语法如下: timescale <time_unit> <time_precis…...
Centos7 安装mongoDB
下载安装包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.12.tgz 解压 tar -zxvf mongodb-linux-x86_64-3.2.12.tgz移动到指定位置 mv mongodb-linux-x86_64-3.2.12/ /usr/local/mongodb在/usr/local/mongodb下创建文件夹 cd /usr/local/mongodb m…...
Redis冲冲冲——Redis持久化方式及其区别
目录 引出Redis持久化方式Redis入门1.Redis是什么?2.Redis里面存Java对象 Redis进阶1.雪崩/ 击穿 / 穿透2.Redis高可用-主从哨兵3.持久化RDB和AOF4.Redis未授权访问漏洞5.Redis里面安装BloomFilte Redis的应用1.验证码2.Redis高并发抢购3.缓存预热用户注册验证码4.R…...
谷粒商城【成神路】-【10】——缓存
目录 🧂1.引入缓存的优势 🥓2.哪些数据适合放入缓存 🌭3.使用redis作为缓存组件 🍿4.redis存在的问题 🧈5.添加本地锁 🥞6.添加分布式锁 🥚7.整合redisson作为分布式锁 🚗…...
Facebook、亚马逊账号如何养号?
之前我们讨论过很多关于代理器的问题。它们的工作原理是什么?在不同的软件中要使用那些代理服务器?这些代理服务器之间的区别是什么?什么是反检测浏览器等等。 除了这些问题,相信很多人也会关心在使用不同平台的时代理器的选择问题。比如,为什么最好…...
Milvus的相似度指标
官网:https://milvus.io/docs/metric.md版本: v2.3.x 在 Milvus 中,相似度度量用于衡量向量之间的相似度。选择良好的距离度量有助于显着提高分类和聚类性能。下表展示了这些广泛使用的相似性指标如何与各种输入数据形式和 Milvus 索引相匹配。 一、浮…...
如何在unity中实现倒计时
public class showtime : MonoBehaviour {public TextMeshProUGUI Countdown;void Update(){if (Input.GetKeyDown(KeyCode.Space))//如果按下空格后开始倒计时{StartCoroutine(hahaha());}}IEnumerator hahaha()//声明了一个协程函数 hahaha{int time 10;Countdown.text tim…...
蓝桥杯简单题,公司名称
题目链接(需要登录) #include <iostream> #include <cstring> #include <algorithm> using namespace std; bool lanqiao(string str,int len){ sort(str.begin(),str.end());//对str按照ascii排序if(str.find("Laainoq")s…...
【linux】02 :Linux基础命令
1.掌握linux系统的目录结构 linux只有一个顶级目录,称之为:根目录。 windows系统有多个顶级目录,即各个盘符。 2.linux路径的描述方式 /在Linux中的表示:出现在开头表示根目录,出现在后面表示层级关系。 3.什么是命…...
AOP切面编程,以及自定义注解实现切面
AOP切面编程 通知类型表达式重用表达式切面优先级使用注解开发,加上注解实现某些功能 简介 动态代理分为JDK动态代理和cglib动态代理当目标类有接口的情况使用JDK动态代理和cglib动态代理,没有接口时只能使用cglib动态代理JDK动态代理动态生成的代理类…...
C70600 CuNi10Fe1Mn铜合金深冲性能好
C70600 CuNi10Fe1Mn铜合金深冲性能好CW608N-R460、CW608N-H135、CuZn36Pb2As-R370、CuZn38Pb1-R460、CW607N-H120、CuZn38Pb1-H120、CW602N-H080、CW608N-H105、CuZn39Pb0.5-R460、CuZn39Pb0.5-H120、CW608N-H120、CuZn38Pb1-R470、CW607N-H080、CW607N-R470、CW607N-H105、CuZ…...
我试了四种去除 Gemini 水印的方法,整理成一篇实用对比驹
认识Pass层级结构 Pass范围从上到下一共分为5个层级: 模块层级:单个.ll或.bc文件 调用图层级:函数调用的关系。 函数层级:单个函数。 基本块层级:单个代码块。例如C语言中{}括起来的最小代码。 指令层级:单…...
【LLM工程化生死线】:A/B测试未通过=模型不可上线——某金融大模型因跳过这3步合规验证被监管叫停的完整复盘报告
第一章:大模型工程化中的A/B测试实践 2026奇点智能技术大会(https://ml-summit.org) 在大模型落地场景中,A/B测试不再仅是推荐系统或前端UI的验证手段,而是保障推理质量、响应延迟、成本效率与用户满意度协同演进的核心工程闭环。当多个LLM服…...
大模型推理延迟飙升?3类隐蔽性指标异常正在吞噬你的SLA(附实时告警黄金阈值清单)
第一章:大模型工程化运维监控体系建设 2026奇点智能技术大会(https://ml-summit.org) 大模型工程化运维监控体系是保障LLM服务高可用、可归因、可持续演进的核心基础设施。与传统微服务监控不同,该体系需同时覆盖推理延迟、显存泄漏、KV缓存命中率、to…...
Room数据库迁移踩坑实录:从手动到自动的完整避坑指南
Room数据库迁移实战:从手动到自动的完整避坑指南 去年在重构一个百万级用户的金融类App时,我们团队在数据库迁移上栽了个大跟头。某个深夜的紧急更新后,部分用户的交易记录突然"消失",最终排查发现是漏掉了一个Migratio…...
从数据到模型:最小二乘法在曲线拟合中的实战解析
1. 最小二乘法:数据与模型的桥梁 当你手头有一堆实验数据,想要找出其中的规律时,最小二乘法就是你的好帮手。想象一下,你是一位化学研究员,记录了一组反应速率随温度变化的数据点。这些点看起来大致呈直线分布…...
Navicat试用期重置终极指南:5步轻松突破数据库工具时间限制
Navicat试用期重置终极指南:5步轻松突破数据库工具时间限制 【免费下载链接】navicat-premium-reset-trial Reset macOS Navicat Premium 15/16/17 app remaining trial days 项目地址: https://gitcode.com/gh_mirrors/na/navicat-premium-reset-trial 你是…...
Windows系统终极优化方案:WinUtil一键管理工具完全指南
Windows系统终极优化方案:WinUtil一键管理工具完全指南 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil WinUtil是一款由Chris Tit…...
5分钟掌握ServerPackCreator:从Minecraft模组包到专业服务器的一键转换
5分钟掌握ServerPackCreator:从Minecraft模组包到专业服务器的一键转换 【免费下载链接】ServerPackCreator Create a server pack from a Minecraft Forge, NeoForge, Fabric, LegacyFabric or Quilt modpack! 项目地址: https://gitcode.com/gh_mirrors/se/Serv…...
终极Windows驱动清理指南:用Driver Store Explorer释放20GB磁盘空间
终极Windows驱动清理指南:用Driver Store Explorer释放20GB磁盘空间 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Driver Store Explorer(简称RAPR)…...
3个超实用技巧解决Upscayl GPU加速初始化失败问题
3个超实用技巧解决Upscayl GPU加速初始化失败问题 【免费下载链接】upscayl 🆙 Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl 您是否也曾满怀期待地下载了…...
