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

面向对象编程 (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><spa
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值