070、Python 关于面向对象编程

1、指令式编程

计算机编程起源于汇编语言和机器语言,早期的这些语言被叫做指令式编程范式(所谓编程范式就是程序设计的方法论)。程序员直接操作计算机的指令来完成任务,这种编程方式非常接近硬件。早期的代码比较少,逻辑相对比较简单,所以基本使用指令式编程就能满足需求。

2、面向过程编程

随便应用越来越复杂和要求越来越高,并随着高级编程语言(如Fortran和COBOL)的出现,面向过程编程逐渐兴起。程序员将任务分解为一系列的过程或函数,按照顺序执行这些过程来完成任务。

到70年度,C语言的出现进一步推动了面向过程编程的发展,C语言支持函数和结构化编程,使得程序设计更加模块化和可维护。

3. 面向对象编程:

在程序员使用面向过程编程进行编程的同时,伟大的程序员在探索更优的编程道路上寻找到了更优的编程方法,那就是面向对象编程。在需要设计很多代码,很多函数,很多功能的应用中,面向对象编程无疑给程序员们打开了一个新的编程世界。

不过面向对象编程也不是一下子就出来的,也是随着计算机科学的发展和编程需求的变化和前辈们一步步积累的经验成果:

  • 1960-1970年代:面向对象编程的思想开始萌芽,Simula语言被认为是第一个面向对象编程语言,它引入了类和对象的概念。

  • 1980年代:Smalltalk等面向对象编程语言的出现进一步推动了面向对象编程的发展。面向对象编程强调数据和操作的封装,继承和多态等概念。

  • 1990年代:Java和C++等面向对象编程语言的流行使得面向对象编程成为主流范式。面向对象编程被广泛应用于软件开发中,提高了代码的可重用性和可维护性。

面向对象编程(Object-Oriented Programming,OOP)是一种常见的编程范式,它将程序中的数据和操作数据的方法封装在一起,以对象为中心来组织代码。在面向对象编程中,数据被视为对象,对象之间可以相互交互,通过消息传递来实现数据处理和功能调用。

面向对象编程的核心概念:

  • 类(Class)

    • 类是对象的模板,定义了对象的属性(成员变量)和方法(成员函数)。
    • 类可以看作是一种数据类型,用于创建对象。
    • 我们可以理解类就是将有共同特征(静态特征和动态特征)的对象的共同特征抽取出来之后得到的一个抽象概念。
  • 对象(Object)

    • 对象是类的实例,具体化了类的属性和方法。

    • 类是对象的蓝图(模板),有了类才能够创建出这种类型的对象。

    • 对象是可以接收消息的实体,面向对象编程就是通过给对象发消息达到解决问题的目标。

    • 对象 = 数据 + 函数(方法):对象将数据和操作数据的函数从逻辑上变成了一个整体。

    • 每个对象都有自己的状态(属性值)和行为(方法)。

  • 封装(Encapsulation):封装是将数据和操作数据的方法捆绑在一起,隐藏了对象的内部实现细节,只暴露必要的接口给外部使用。

  • 继承(Inheritance):继承允许一个类(子类)继承另一个类(父类)的属性和方法,子类可以重用父类的代码并添加自己的特定功能。

  • 多态(Polymorphism):多态性允许不同类的对象对同一消息做出响应,即不同对象可以有相同的方法名,但具体的实现方式不同。

面向对象编程步骤:

1、定义类:

  • 数据抽象:找到和对象相关的静态特征(属性)
  • 行为抽象:找到和对象相关的动态特征(方法)

2、找对象

3、发消息

示例:

# 定义一个简单的类
class Dog:def __init__(self, name):self.name = namedef bark(self):print(f"{self.name} is barking!")# 创建对象
dog1 = Dog("Buddy")
dog2 = Dog("Max")# 调用对象的方法
dog1.bark()  # 输出: Buddy is barking!
dog2.bark()  # 输出: Max is barking!

面向对象编程是个很重要的编程范式。尤其对于构建复杂的软件系统,通过模块化和抽象化的方式来解决问题。可以更好地组织和管理代码,提高代码的可复用性、可维护性和可扩展性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于CDMA的多用户水下无线光通信(2)——系统模型和基于子空间的延时估计

本文首先介绍了基于CDMA的多用户UOWC系统模型,并给出了多用户收发信号的数学模型。然后介绍基于子空间的延时估计算法,该算法只需要已知所有用户的扩频码,然后根据扩频波形的循环移位在观测空间的信号子空间上的投影进行延时估计。 1、基于C…

matplotlib之savefig函数

savefig函数 Matplotlib中,savefig函数用于保存图形为文件。通过该函数,你可以将绘制的图形保存为常见的图像文件格式,如PNG、JPEG、SVG等。 matplotlib.pyplot.savefig(fname, dpiNone, bbox_inchestight, pad_inches0.1, formatNone, tra…

分类接口开发

文章目录 1.查询所有一级分类1.sun-club-application-controller 控制层1.SubjectCategoryController.java 定义基础的queryPrimaryCategory,调用领域层 2.sun-club-domain 领域层1.SubjectCategoryDomainService.java2.SubjectCategoryConverter.java3.SubjectCate…

Python 算法交易实验72 QTV200第一步: 获取原始数据并存入队列

说明 最近的数据流往前进了一步,我觉得基本可以开始同步的推进QTV200了。上次规划了整体的数据流,现在开始第一步。 内容 1 结构位置 这是上次的总体图: 以下是这次要实现的一小部分: 从结构上,这个是整体数据流的…

力扣-接雨水

文章目录 概要题解解释代码比较左右高度处理右侧为什么双指针法有效 概要 原题链接:接雨水 题解 思路:双指针 核心思想:对于任意位置 i,能够存储的雨水量取决于位置 i 左侧和右侧的最大高度中的较小值减去 height[i]。即 min(le…

使用MySQL WorkBbench 连接远程服务器上的mysql教程(包含踩过的坑)

最近在学习MySQL,想要装一个可视化程序,但是希望把脏活累活留给服务器,于是自己电脑上安装了一个MySQL Workbench作为Client。下面记录一下配置的过程。 服务器端MySQL配置 安装MySQL这里就不赘述啦,可以参考 https://segmentfa…

路经总和-二叉树题

112. 路径总和 - 力扣(LeetCode) 1、用队列 两个队列,先进先出 node队列存节点; sum队列存每条路径走到这个节点的val的总和; 节点和总和对应着同时存入队列,同时出队列; class Solution …

墨水屏阅读器其实比较反智

kindle 和iPad,有人说就是读书和不读书的区别。 个人看,这玩意儿属于反智的存在。当然,你习惯且用的好,那随意。因为iPad能干的,kindle也能干。iPad还能绘画,手写及时查阅,丰富的交互笔记和在线…

springboot+vue+mybatis旅游管理+PPT+论文+讲解+售后

随着人民生活水平的提高,旅游业已经越来越大众化,而旅游业的核心是信息,不论是对旅游管理部门、对旅游企业,或是对旅游者而言,有效的获取旅游信息,都显得特别重要.旅游管理系统将使旅游相关信息管理工作规范化、信息化、程序化,提供旅游景点、旅游线路,旅游新闻等服务本文以jsp…

压力测试Monkey命令参数和报告分析

目录 常用参数 -p <测试的包名列表> -v 显示日志详细程度 -s 伪随机数生成器的种子值 --throttle < 毫秒> --ignore-crashes 忽略崩溃 --ignore-timeouts 忽略超时 --monitor-native-crashes 监视本地崩溃代码 --ignore-security-exceptions 忽略安全异常 …

如何使用ig507金融数据库的股票接口,股票API来获取MACD指标

一、MACD指标简介 MACD&#xff08;Moving Average Convergence Divergence&#xff0c;移动平均收敛/发散&#xff09;是一种趋势跟踪动量指标&#xff0c;用于分析股票或其他金融产品的价格趋势。MACD由两部分组成&#xff1a;差离值&#xff08;DIF&#xff09;和信号线&am…

借助ChatGPT降低学术论文重复率,使用技巧全攻略,实用有效,快速上手

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。可以&#xff08;yida985&#xff09;交流学术写作或ChatGPT等AI领域相关问题&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步。 经常有学术同…

Python编程技巧:如何正确使用with语句(Python中with用法详解)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 基本语法📝 处理文件📝 处理网络连接📝 管理线程锁📝 管理数据库连接📝 管理临时目录和文件📝 使用上下文装饰器📝 自定义上下文管理器🎯 示例1🎯 示例2📝 使用多个上下文管理器📝 上下…

自媒体素材管理系统设计

设计自媒体素材管理系统时&#xff0c;我们需要考虑多个方面以确保系统的高效性、易用性和安全性。以下是一个自媒体素材管理系统设计的详细概述&#xff1a; 一、系统概述 自媒体素材管理系统是一个用于存储、管理和检索自媒体内容&#xff08;如图片、音频、视频等&#xff…

Visual Studio开发环境搭建

原文&#xff1a;https://blog.c12th.cn/archives/25.html Visual Studio开发环境搭建 测试&#xff1a;笔记本原装操作系统&#xff1a;Windows 10 家庭中文版 资源分享链接&#xff1a;提取码&#xff1a;qbt2 注意事项&#xff1a;注意查看本地硬盘是否够用&#xff0c;建议…

UE5开发游戏Tutorial

文章目录 PlayerStart 初始化设置默认 LevelBP_Character 初始化BP_Character 添加动画BP_Character 攻击BP_Enemy 初始化 以及 AI 运动Camera Collision 相机碰撞BP_Character 生命以及伤害Wave Spawner 波生成UI 初始化以及 Damage Screen指定位置随机生成添加声音环境 Envir…

QML 中宽度、高度与隐式宽度/高度的区别及其应用场景

在 QML 中,width、height 与 implicitWidth、implicitHeight 这几个属性常常令开发者感到困惑。本文将详细介绍它们之间的区别,并说明在何种情况下应使用隐式尺寸以及普通尺寸。 基本定义 width 和 height:表示组件/item 的实际尺寸。implicitWidth 和 implicitHeight:表示…

茴香豆的使用

RAG RAG 模型的核心在于两大部分&#xff1a;检索器&#xff08;Retriever&#xff09;和生成器&#xff08;Generator&#xff09;。检索器的作用是从一个庞大的数据集中&#xff0c;根据输入的问题或者提示&#xff0c;快速有效地检索出最相关的信息或文档。这一步骤通常利用…

【算法专题--链表】两两交换链表中的节点 -- 高频面试题(图文详解,小白一看就懂!!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双指针 -- 采用哨兵位头节点 &#x1f95d; 什么是哨兵位头节点&#xff1f; &#x1f34d; 解题思路 &#x1f34d; 案例图解 四、总结与提炼 五、共勉 一、前言 两两交换链表中的节点 这道题&#xff0c;可以说…

【LLM之KG】CoK论文阅读笔记

研究背景 大规模语言模型&#xff08;LLMs&#xff09;在许多自然语言处理&#xff08;NLP&#xff09;任务中取得了显著进展&#xff0c;特别是在零样本/少样本学习&#xff08;In-Context Learning, ICL&#xff09;方面。ICL不需要更新模型参数&#xff0c;只需利用几个标注…