Python中的面向对象编程概念

已发表: 2020-12-01

面向对象是一种编程范式,它遵循类和对象的概念来代替函数和逻辑。 它也被称为花哨的编码方式,以提高代码可读性和可维护性的方式组织代码。 OOP 概念是编程中的一个重要主题,有助于为数据科学中的各种任务构建可重用的模块。

这通常是使用各种库(例如 Pytorch)构建深度学习模型的先决条件,其中基础模型被重用于添加自定义层。 让我们探讨一下这个概念教了什么,以及如何在实际用例中应用它。

目录

什么是 OOP 概念?

考虑一款可以是任何品牌的智能手机,但它们是所有品牌中的各种常见事物。 所有这些都有屏幕、扬声器、按钮,在软件层面上,几乎所有这些都是 android 驱动的。 现在考虑一个案例,每个公司都从头开始制作他们的软件,甚至是控制大部分硬件组件的内核。

这将成为一个乏味且昂贵的过程,因此会增加设备的价格。 如果有任何制造商可以根据他们的要求随时间更改的抽象或通用模型怎么办? 这个概念试图捕捉这种基于类的方法,其中代码在具有不同访问器方法的类中结构化。

什么是类和对象?

类是必须实现的蓝图。 如果我们考虑前面的示例,我们可以拥有呼叫某人、接听电话、消息、播放音乐或做其他事情的功能。

所有这些东西对于每个智能手机来说都是通用的,它们的内部工作也是相似的,它们可以被认为是智能手机的一类功能或一类。 对象可以定义为所有将在其产品中使用此通用实现并进行修改的智能手机品牌。

这个基类可以有多个实例,每个实例都可以保持不同的值状态,而不会干扰其他对象。 在 Python 中,可以使用保留关键字 class 来声明一个类。 此外,__init__ 构造函数用于初始化类变量。

类公司:

def __init__ (自我):

self.name = 'upGrad'

def display_name(自我):

print(f"公司名称是:{self.name}")

厘米 = 公司()

cm.display_name()

另请阅读:印度的 Python 开发人员薪水

OOP 的不同支柱

现在我们已经熟悉了这个范式的基本构建块,让我们看一下这个概念的一些最重要的特性/特征:

封装

这表明类的方法(或函数)和与之相关的数据被封装或保护免受意外或外部访问。 这意味着在私有或受保护范围内定义的属性在类外是不可访问的。

Python 有一个问题,即在该语言中没有私有变量的概念,因此属性可以在类外部访问。

有一种方法可以通过在声明开头使用双下划线来识别私有属性,如果您尝试通过相同的对象在类外部访问它,您将收到 AttributeError 提示,因为 Python 在检测到时应用名称修改一个私有变量。 这不会为您的属性提供任何安全性,因为它们仍然可以访问。

遗产

正如这个词所暗示的那样,它将现有类的一部分称为父类到一个称为子类的新类,几乎没有或没有变化。 我们可以通过这种方式将其与我们的示例联系起来,即所有智能手机品牌都继承了一个通用电话类,这将帮助他们执行基本功能,此外,他们还可以根据自己的需要添加额外的代码来增强用户体验。 在 Python 中,继承一个类是通过以下方式完成的:

A类:

一些内容

B(A)类:

派生类的内容

还有另一个与继承相关的概念称为函数覆盖。 假设普通智能手机的摄像头功能不是很好,制造商对此有更好的解决方案。 他们可以通过在子类中再次定义它来直接覆盖这个函数并在那里应用更改。

抽象

它定义了子类实现的蓝图或接口。 这意味着在基类中定义了一些方法,这些方法没有完全实现,只定义了一个抽象视图。 它可以帮助跟踪要创建的模块和子模块的各种功能。

例如,一些智能手机支持 NFC(近场连接),此功能可以在基类中定义,其实现可以在生成的手机的子类中编码。 这样,抽象基类就可以提供模块和后续实现的整体视图。 这是一个例子:

上课电话:

高清相机(自己):

经过

def NFC(自我):

经过

Xyz 类(电话):

def NFC(自我):

返回真

了解:顶级 Python 工具

多态性

如果我们按照词根的意思去,它意味着同一事物的多种形式。 多态性根据传递的参数的数量或类型定义函数。 例如,Python 中的 length 函数可以采用任何类型的可迭代对象或对象并返回整数长度。

这也可以被引用为函数重载,但这是 Python 语言中的一个问题。 我们不能用不同的参数定义同名的函数,如果完成了,那么它只考虑最后一个条目。

OOP 的实际用例

我们已经了解了这个概念的全部内容以及它提供的功能。 查看一些可以应用此概念的示例:

Jinja 模板:如果你对处理路由和服务器端的 Python Flask 框架有一定的经验,那么这个模板有助于在前端处理这些数据。 通常,会创建一个基本 HTML 文件,然后由所有页面继承以在整个网站中具有相同的布局。

Kivy Applications:这是一个库,允许您构建基于 GUI 的跨平台(android 和 IOS)python 应用程序,这里的大部分编程都是基于 OOP 概念的。

ORM:对象关系映射器提供了一种使用任何语言在应用程序代码中定义关系数据库的方法。 例如,在 Django 中,您可以使用类为不同类型的用户定义不同类型的模型。

结论

在本文中,我们讨论了 OOP 概念是什么,它是构建块(类和对象)、不同的支柱,并强调了采用这种范式的一些示例。 由于更好的代码管理、协作以及为依赖于此的其他程序提供抽象功能,许多地方都考虑了这种编程方法。

如果您想了解 Python、数据科学,请查看 IIIT-B 和 upGrad 的数据科学 PG 文凭,该文凭专为在职专业人士而设,提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导,与行业导师一对一,400 多个小时的学习和顶级公司的工作协助。

什么是面向对象?

面向对象编程,缩写为OOP,是一种计算机编程技术,它根据数据组织软件设计,而不是根据功能和逻辑来组织软件设计。 OOP 关注对象,即开发人员希望控制的具有不同属性和行为的数据字段,而不是管理它们所需的逻辑。 这种编程方法非常适合不断更新或维护的大型复杂应用程序。 OOP 涵盖制造、设计和移动应用程序计划。 这种语言的其他优点是代码的可重用性、可伸缩性和效率。

OOP 中有哪些不同的语言?

面向对象的编程语言构成了当今计算机行业中最常用的几种编码语言。 OOP 语言随处可见。 这些语言使用同时保存数据和代码的对象。 封装、抽象、多态和继承是面向对象的编程思想。 流行的面向对象编程语言包括 Java、Python、C++、Lisp 和 Perl。 他们利用类和对象范式协助编程。 其他支持面向对象原则的语言有 Perl、Objective-C、Dart、Lisp、JavaScript 和 PHP。

为什么首选 OOP?

首选 OOP 的原因有很多。 开发人员可以重用面向对象的代码。 您还可以使用继承来复制以前创建的信息和功能。 这节省了时间,简化了代码,节省了空间,并使我们的手指更容易编码。 由于大部分代码都在一个位置并被调用和重用,因此维护起来相当容易。 虽然大多数语言都提供一定程度的安全性,但面向对象的语言更方便,因为封装包括安全性。 面向对象的编程语言将程序划分为对象和类。 这是有利的,因为它为您的应用程序提供了更加模块化的框架。