在开发人员中,面向对象的编程吸引了大量的追随者。 流行的计算机语言 Python 同样遵循面向对象的范式。
它处理在 Python 中定义对象和类,这是 OOP 原则的基础。 在本教程“Python 中的面向对象编程”中,您将学习如何声明 Python 类、从它们创建对象以及使用四种 OOP 技术。
所以,第一件事。
什么是面向对象的编程?
面向对象编程(OOP)的主要焦点是“对象”的创建。 相互关联的变量和函数的集合构成了一个对象。
这些变量经常被称为对象的属性,而它的行为通常被称为它的功能。 这些项目为应用程序提供了更有效和更易于理解的结构。 汽车是物品的一个例子。
如果汽车是一个物品,它的属性将包括它的颜色、型号、价格、品牌等。此外,它还会加速、减速和换档。
另一个例子:如果我们把狗想象成一个物品,那么它的一些特征可能是颜色、品种、名字、重量等。它会四处走动、吠叫、玩耍等。
因为它将对象、隐藏、继承等现实世界的概念结合到编程中,所以面向对象编程是众所周知的。 因为它与现实世界的情况非常相似,所以可视化变得更简单。
面向对象的编程概念
Python 中的类和对象
与所有其他面向对象的语言一样,Python 使您能够设计类来生成对象。 Python 中最流行的数据类型,包括字符串、列表、字典和其他对象,都是内置类。
类是一组定义某种对象的链接方法和实例变量。 一个类可以被视为一个对象的模型或模板。 构成类的变量称为属性。
对象是具有已定义属性集的类的成员。 因此,可以使用同一个类创建任意数量的对象。
Python 类是使用单词 class 定义的,然后是类名和冒号。 鹦鹉类的示例可能是:
在这里,我们使用 class 关键字声明空类 Parrot。 我们从类创建实例。 实例是由某个类制成的特定对象。 'pass' 经常被用作我们暂时可以放弃其实现的代码的替代。 我们可以通过使用“pass”关键字来执行 Python 代码而不会引发错误。
类的实例化产生一个对象(实例)。 创建类时只定义对象的描述。 因此,没有分配存储或 RAM。
鹦鹉类对象的一个例子是:
在此实例中,Obj 是 Parrot 类对象。
假设我们知道鹦鹉的细节。 我们现在将演示如何创建鹦鹉类及其对象。
特殊方法(__init__)
一个名为 init 的方法定义了每个 Parrot 对象必须具有的属性 ()。 当一个新的 Parrot 对象形成时,函数 __init__ 通过分配我们在对象属性中提供的值来创建对象的初始状态。
因此,类的每个新实例都使用 __init__() 进行初始化。 尽管 __init__() 可以接受任意数量的参数,但 self 始终是第一个参数。
自变量中包含对活动类实例的引用。 self 参数链接到类的当前对象的地址,并让我们能够访问其(对象的)变量的数据,这表明了这一点。
例子1
我们在上面的代码中建立了一个名为 Parrot 的类。 接下来,定义属性。 事物的特征就是它的属性。 类的 __init__ 函数是指定这些特征的地方。
当一个对象形成时,初始化方法是最初被调用的方法。 然后,创建 Parrot 类的实例。 在这种情况下,Blaze 和 Wonda 是对我们新对象的引用(值)。 __class .species 允许我们访问类属性。
类的每个实例都具有相同的特征。 也可以使用 blaze.name 和 blaze.age 访问实例特征。 但是,一个类的所有实例都具有唯一的实例属性。
例子2
方法
在类体内定义的函数称为方法。 它们用于指定项目的行为方式。
前面提到的应用程序 () 中定义了两个方法,sing() 和 dance。 因为它们是在实例对象(例如火焰)上调用的,所以它们被称为实例方法。
OOPS 概念的基础
面向对象编程的四个核心思想是:
- 遗产
- 封装
- 多态性
- 抽象化
遗产
人们经常告诉新生儿,他们的面部特征与父母相似,或者他们从父母那里继承了特定的特征。
您可能还观察到您与父母有一些共同特征。 现实世界的情况也与继承非常相似。
但是,在这种情况下,“父类”的特征会传递给“子类”。 在本文中,这些方面被称为“属性”和“方法”。
一个类可以通过使用称为继承的技术从另一个类派生其方法和属性。 继承是子类接收父类属性的过程。
例如::
父类 Human 由上例中的子类 Boy 继承。 因为 Boy 是从 Human 继承的,所以我们可以在创建 Boy 类的实例时访问它的所有方法和属性。
在 Boy 类中,还定义了一个名为 schoolName 的方法。 父类对象无法访问方法 schoolName。 但是,可以通过创建子类对象 (Boy) 来调用 schoolName 方法。
封装
在使用类和处理敏感数据时,为程序中的每个变量提供全局访问权限并不是明智之举。
在不让程序完全访问这些变量的情况下,封装为我们提供了一种获取必要变量的机制。
为此目的明确定义的方法可用于更新、编辑或删除变量中的数据。 这种编程方法具有增强的安全性和对数据输入的控制的优点。
在下面的演示中查看变量的访问速度有多快:
多态性
假设您正在使用手机浏览 Instagram的饲料. 当你有听音乐的冲动时,你访问了 Spotify 并开始播放你最喜欢的歌曲。
过了一会儿,你接到了一个电话,所以你在后台暂停了你正在做的任何事情来接听它。 您的朋友打来电话,要求您向他们发送某个人的电话号码。
因此,您通过短信向他发送了电话号码并继续您的任务。 你有什么收获吗? 只需一个设备(您的手机),您就可以浏览订阅源、听音乐、接听和拨打电话以及发送信息。
因此,多态性与此相当。 Poly表示众多,morph表示不同的形式。 因此,多态性作为一个整体是指具有各种形式的事物。
或者“某物”,根据情况,可以表现出各种行为。 在 OOPS 中,多态性描述了具有相同名称但行为不同的函数。 或者,具有相同函数名称(传递给函数的参数)的不同函数签名。
例如::
在这里,我们可以使用变量 animal 来遍历 Zebra 和 Rabbit 的对象,使用它们各自的实例方法。 因此,斑马和兔子的行为(color() & eats())在这里都由一个名为 animal 的变量来表示。 因此,它遵守多态性规则。
抽象化
您很可能使用笔记本电脑、手机或平板电脑来阅读此内容。 在阅读它的同时,您可能还在做笔记,在关键段落下划线,并且可能将一些信息存储在您的个人文件中。
当您阅读本文时,您所能看到的只是一个“屏幕”,其中包含正在向您显示的数据。 您只需在键入时看到键盘的按键,因此您不必担心内部的细微差别,例如按下某个键会导致该单词出现在屏幕上。
或者,按下屏幕上的按钮如何启动新标签。
因此,在这种情况下我们可以观察到的任何东西都是抽象的。 我们只能看到它正在创造的结果,而不是内部的复杂性(这对我们来说实际上很重要)。
与此类似,抽象仅揭示一切事物所具有的功能,而隐藏任何实现或内部细节。
抽象的主要目标是隐藏背景信息和任何无关的数据实现,以便人们只看到他们需要看到的东西。 它有助于管理代码的复杂性。
例如::
此处存在与车辆相关的抽象类。 因为继承自抽象类ABC,所以是抽象的。 因为抽象方法未定义或保持为空,Vehicle 类有一个名为 no of Wheels 的抽象方法,它缺少定义。
他们期望继承抽象类的类给出方法的实现。
OOPS 概念的好处
- 通过封装,实现了高安全性和数据隐私。
- 具有同一类的许多多态版本的灵活性。
- 抽象化降低了高水平的代码复杂性。
- 无需筛选数百行代码来定位单个问题,编程的模块化使调试变得简单。
- 代码重用是由子类继承父类属性引起的。
- 有效的问题解决是可能的,因为我们创建了为每个小问题执行必要操作的类。 由于我们可以重用这些类,因此可以更快地解决以下问题。
结论
总之,我们了解了 Python 中的 OOPS 思想,这是目前最热门的编程范式。
读完之后,你一定已经意识到 OOPS 范式完全是处理类和对象的思想。 以及 OOPS 概念,例如封装、多态、继承和抽象。
发表评论