使用 Python 介绍面向对象编程 (OOP)

什么是面向对象编程(OOP)? 抽象意味着只向用户暴露重要的信息,隐藏具体的实现细节。在面向对象编程中,这通常是通过使用抽象类和接口来实现的。面向对象编程是一种强大的编程范式,它通过封装、继承、抽象和多态提高了代码的灵活性和可维护性。在Python中实现OOP不仅可以提高开发效率,还可以帮助开发者编写清晰、模块化且高效的代码。理解和掌握OOP的原则对任何希望提升编程技能的Python开发者都是非常有价值的。 阅读详情

面向对象编程 (OOP)是一种编程范式,它提供了结构化程序的方法,以便将属性和行为分组到单个对象中。

例如,一个对象可以代表一个具有姓名、年龄和地址等属性的人,以及走路、说话、呼吸和跑步等行为。它可以表示具有收件人列表、主题、正文等属性以及添加和发送附件等行为的电子邮件。

换句话说,面向对象编程是一种对现实世界中的具体事物(例如汽车)以及事物之间的关系(例如公司与员工、学生与教师等)进行建模的方法。此类编程对现实世界进行建模实体作为具有某些关联数据并可以执行某些功能的软件对象。

另一种常见的编程范式是过程式编程,它像食谱一样构建程序,因为它以函数和代码块的形式提供一组步骤,这些步骤按顺序流动以完成任务。

最重要的一点是对象是面向对象编程的中心,它不仅像过程编程那样表示数据,而且在程序的一般结构中也是如此。

如果对Python有兴趣,想了解更多的Python以及AIoT知识,解决测试问题,以及入门指导,帮你解决学习Python中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己Python方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们,可领取最新Python大厂面试资料和Python爬虫、人工智能、学习资料!微信公众号【Python大本营】等你来玩奥~

为什么我们应该使用面向对象编程(OOP)?

开发人员经常选择在他们的 Python 程序中使用面向对象编程 (OOP),因为它使代码更具可重用性,并且更容易处理更大的程序。这样的程序可以帮助开发人员避免重复代码,因为一个类可以定义一次并多次重用。

Python 是一种面向对象编程 (OOP)语言,它是一种非常流行的软件创建方式。与主要强调函数的过程式编程不同,面向对象的编程强调对象。

使用 OOP,您可以使您的程序更有条理、可扩展、可重用和可扩展。然而,面向对象编程(OOP)的概念对一些开发人员来说可能有点陌生。这可能很难理解,但我向你保证,毫无疑问,它是一个非常强大的概念。

让我们稍微谈谈构成面向对象编程(OOP)本质的一些元素。

我们如何用 Python 定义类?

就像 Python 中的函数定义以 def 关键字开头一样,类定义也以 class 关键字开头。

类中的第一个字符串称为 docstring 并且有关于类的简短描述。虽然不是强制性的,但是出于文档的原因,一般强烈建议放置它,但不要担心如果不放置它就不会发生任何事情,它只是以最好的方式做事。

这是一个简单的类定义,没什么花哨的,已经包含了文档字符串,所以你可以看到它是如何添加到我们的代码中的。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-declaration-color)">class</span> <span style="color:var(--syntax-name-color)">NicaraguanTypicalMeals</span><span style="color:var(--syntax-text-color)">:</span>
<span style="color:var(--syntax-string-color)">''' This is the  NicaraguanTypicalMeals class '''</span>
<span style="color:var(--syntax-declaration-color)">pass</span>
</code></span></span>

一个类创建一个新的本地命名空间,其中定义了它的所有属性。属性可以是数据或函数。

它还包含以两个下划线开头的特殊属性。为了给你一个具体的例子,你可以尝试使用 __doc,它为我们提供了一些类的文档字符串。

一旦我们定义了一个类,就会创建一个具有相同名称的新类对象。这个类对象允许我们访问不同的属性,以及创建该类的新对象的实例。

一个类的示例还包含一个用于问候 Python 开发人员的方法,类似于以下代码段中建议的类:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-declaration-color)">class</span> <span style="color:var(--syntax-name-color)">PythonDev</span><span style="color:var(--syntax-text-color)">:</span>
    <span style="color:var(--syntax-string-color)">''' This is the docstrings for the PythonDev class '''</span>

    <span style="color:var(--syntax-declaration-color)">def</span> <span style="color:var(--syntax-name-color)">__init__</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-text-color)">self</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-text-color)">age</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-literal-color)">18</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-text-color)">nationality</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"Nicaraguense"</span><span style="color:var(--syntax-text-color)">):</span>
        <span style="color:var(--syntax-text-color)">self</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">age</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">age</span>
        <span style="color:var(--syntax-text-color)">self</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">nationality</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">nationality</span>

    <span style="color:var(--syntax-declaration-color)">def</span> <span style="color:var(--syntax-name-color)">greet</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-text-color)">self</span><span style="color:var(--syntax-text-color)">):</span>
        <span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"Nationality: </span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-text-color)">self</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">nationality</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-string-color)">."</span><span style="color:var(--syntax-text-color)">)</span>
        <span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"Current age: </span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-text-color)">self</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">age</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-string-color)"> years old."</span><span style="color:var(--syntax-text-color)">)</span>

<span style="color:var(--syntax-comment-color)"># First, we create the instance of this class
</span><span style="color:var(--syntax-text-color)">pythonDev01</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">PythonDev</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-literal-color)">39</span><span style="color:var(--syntax-text-color)">)</span>

<span style="color:var(--syntax-comment-color)"># Let's use the methods of this object
</span><span style="color:var(--syntax-text-color)">pythonDev01</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">greet</span><span style="color:var(--syntax-text-color)">()</span>

<span style="color:var(--syntax-comment-color)"># Create another instance passing both parameters now
</span><span style="color:var(--syntax-text-color)">pythonDev02</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">PythonDev</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-literal-color)">20</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"Costarricense"</span><span style="color:var(--syntax-text-color)">)</span>
<span style="color:var(--syntax-text-color)">pythonDev02</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">greet</span><span style="color:var(--syntax-text-color)">()</span>

<span style="color:var(--syntax-comment-color)"># We can also access your methods individually
</span><span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"Nationality: </span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-text-color)">pythonDev01</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">nationality</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-text-color)">)</span>
<span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"Current Age: </span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-text-color)">pythonDev01</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">age</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-text-color)">)</span>
</code></span></span>

类与实例

类用于创建用户定义的数据结构。类定义称为方法的函数,这些函数标识从该类创建的对象可以使用其数据执行的行为和动作。让我们看一个类的例子:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-declaration-color)">class</span> <span style="color:var(--syntax-name-color)">Dog</span><span style="color:var(--syntax-text-color)">:</span>
    <span style="color:var(--syntax-declaration-color)">def</span> <span style="color:var(--syntax-name-color)">__init__</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-text-color)">self</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-text-color)">name</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-text-color)">age</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-text-color)">breed</span><span style="color:var(--syntax-text-color)">):</span>
        <span style="color:var(--syntax-text-color)">self</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">name</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">name</span>
        <span style="color:var(--syntax-text-color)">self</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">age</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">age</span>
        <span style="color:var(--syntax-text-color)">self</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">breed</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">breed</span>

<span style="color:var(--syntax-comment-color)"># Now let's instantiate by creating two objects of this class
</span><span style="color:var(--syntax-text-color)">chele</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">Dog</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">"Chele"</span>
Python面向对象编程 (OOP)入门解析教程 编程是一门艺术。和艺术一样,选择合适的画笔和颜料对于创作出最好的作品至关重要。 Python面向对象编程就是这样一种技能。这是在Python中学习面向对象编程的主要原因,Python也是最流行的编程语言之一。 阅读详情

相关推荐

Python快速入门-第10章 面向对象编程

从Person类的定义可知,Person对象包含变量age和name,你可以像使用常规变量那样使用它们,但必须使用句点表示法,即p.age和p.name。在这个游戏中,两个玩家同时选择一个1~10的整数,如果一个玩家选择的整数比对方选择整数的小1,则该玩家获胜,否则算打平。由于给age提供了设置函数和获取函数,编写的代码就像直接使用变量age,但差别在于:遇到代码p.age = -4时,Python实际上将调用方法age(self, age);其中的箭头表示继承,而整个类图是一个由类组成的层次结构。

andyyah晓波的博客 497

ocpp:开放收费点协议(OCPP)的Python实现

ocpp:开放收费点协议(OCPP)的Python实现

Haclon案例-找出图中面积最大的圆

自带的函数,求得圆的面积和圆心点坐标,然后,用本章所学习的选择算子和循环算子找出面积最大的圆。的图片,试着给它加上不同种类的噪声,然后找出其中面积最大的圆,并将圆的面积标注在其圆心位置。可知,除了六个圆形之外,还有一些微小的噪声点,采用了开运算和特征选择的方法去除噪声。1. 该图片为一灰度图,对其进行二值化,二值化后如图。4. 在面积最大圆的圆心坐标位置写上该圆的面积。

qq_20660115的博客 906

Lumerical FDTD新手教程:5步搞定MMI波导光谱模拟(附避坑指南)

本文提供Lumerical FDTD新手教程,详细讲解5步完成MMI波导光谱模拟的实用方法,包括环境准备、结构建模、光源配置、仿真优化和结果分析。特别针对多模干涉耦合器(MMI)的模拟难点,提供避坑指南和优化策略,帮助光学工程师快速掌握FDTD仿真技术。

kite3的博客 359

功率半导体器件选型指南:从GTO、GTR到MOSFET、IGBT的原理与应用

功率半导体器件是电力电子系统的核心,如同电路中的智能开关,负责电能的转换与控制。其工作原理基于半导体材料的导电特性,通过控制信号精确管理电路的通断。这类器件的技术价值在于提升能效、减小体积并增强系统可靠性,广泛应用于变频器、逆变器、开关电源及新能源领域。理解不同器件如MOSFET的雪崩能量与IGBT的损耗计算,是进行高效、可靠电路设计的基础。本文聚焦于GTO、GTR、MOSFET和IGBT这四类经典全控型器件的特性对比与选型策略,帮助工程师在具体项目中做出经济可靠的选择。

cumo7370的博客 449

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

A20802013的博客 2万+

深入了解BPM及BPM业务流程管理系统

BPM 即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续地提高组织业务绩效为目的的系统化方法。它涵盖了业务流程的整个生命周期,包括流程的设计、执行、监控、分析和优化。BPM 作为一种先进的管理方法,对于企业提高运营效率、降低成本、提升客户满意度和增强竞争力具有重要意义。BPM 流程管理系统为企业实现 BPM 提供了强大的工具和支持,而 F2BPM 流程管理平台以其先进的技术架构、丰富的功能模块、简单易用的操作界面和强大的定制能力,成为企业实现业务流程管理的理想选择。

Stone3625的博客 2954

前端零代码丨UIOTOS + NodeRed:无代码搭建工控上位机的绝配组合!

用户类型价值硬件产品商软硬一体方案,无代码GUI上位机成新卖点软件服务商售前原型演示利器,交付成本降低至1/3平台开发商融合无代码技术,同质化竞争中脱颖而出🚀 总结UIOTOS的前端零代码设计(页面嵌套、属性继承、节点连线)与NodeRed的后端流程自动化,堪称工控与IoT开发的黄金组合。无论是串口通信、SCADA监控还是业务管理,均能实现“无代码交付”,真正让前端不求人,硬件交互触手可及!探索更多案例:UIOTOS官网在线体验。

2502_91192798的博客 757

docker配置国内镜像源

【代码】docker配置国内镜像源。

愿听风成曲 9616

准备生日礼物

摘要: 题目要求统计某月份需要准备的员工生日礼物数量。输入包括目标月份、员工姓名列表和对应的生日列表(格式为Year/Month/Day)。需处理重复员工(以最后一次录入为准),统计该月生日的员工人数。示例1中5月有3名员工生日,输出3;示例2中10月有6名,输出6。解题关键在于使用哈希表去重(以员工姓名为键),拆分生日字符串提取月份进行匹配。代码实现(C++/Java/Python)均遵循以下步骤:读取输入、哈希去重、解析月份并统计目标月份人数。时间复杂度为O(n),空间复杂度O(n)。

面试高手的博客 300

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 用于管理虚拟环境的 Python 工具
下一篇: 如何将 Python 2 项目迁移到 3 以及一些有用的提示
程序员孔乙己
博客等级 码龄5年 1190粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值