Python面向对象编程基础是什么?
Python编程范式中,面向对象编程(OOPs)利用对象和类来使编程具备实现继承、多态、封装等现实世界概念的能力。OOPs背后的基本理念是将数据和使用数据的函数绑定起来,以使代码中的任何其他部分无法访问它。
本文将讨论面向对象编程的基本原则。
更多Python相关文章,请阅读:Python 教程
类
类的定义是一组项。它是一个具有少量独特属性和方法的逻辑实体。例如,如果你有一个关于板球的类,则应该具有players、tournaments、toss、runs、wickets、matches等属性和方法。
实例
请使用下面的示例构造一个名为Cricket的类,该类具有两个字段:player id和player。该类还有一个名为display()的函数,用于显示板球信息 −
输出
以下是上述代码的输出
对象
对象是类的一个实例。它是具有状态和行为的实体。简而言之,它是具有访问数据权限的类实例。它可以是任何实际的物体,例如鼠标、键盘、椅子、桌子、笔等。
Python将所有东西都视为对象,并且大多数对象都具有属性和方法。所有函数的内置属性doc都返回函数源代码中指定的docstring。
实例
以下是创建对象的示例 −
输出
以下是上述代码的输出:
方法
与对象相关联的函数是方法。在Python中,方法不仅适用于类实例。任何类型的对象都可能具有方法。
实例
在下面的示例中,定义了两个方法plant()和animals(),因为‘Pen’是一个实例对象,所以这些方法被称为实例方法。
输出
上述代码的输出如下−
继承
通过继承利用现有类的细节而不改变它,可以创建一个新类。 新创建的类是一个派生类(或子类)。 与之类似,现有类被称为基类(或父类)。
例子
以下是 Python 中继承的示例
输出
上述代码中我们建立了两个类:Animal(父类)和Lion(子类)。 子类继承了父类的函数。 这可以从 Run() 方法看出来。
同样,子类修改了父类的行为。 WhatIstheClass() 方法揭示了这一点。 通过添加新的 run() 方法,我们还扩展了父类的功能。
在init()方法中,我们也使用了super()函数。这使我们能够从子类中调用父类的init()方法。
封装
通过使用OOP,我们可以限制在Python中访问方法和变量。封装是防止直接数据修改的过程。在Python中,我们使用下划线前缀指示私有属性,例如单个或双下划线。
例子
以下是Python中数据封装的示例−
输出
上面的代码定义了Sports类。Sports的游戏名称使用init()方法存储。看下面的代码
在这里,我们尝试在类外部更改__sportsName值。由于__sportsName是私有变量,输出不反映此修改。我们必须使用一个接受sportsName作为参数的setter函数Player Name()来调整值。
多态
“Poly”和”morphs”是构成多态的两个单词。这些词组的意思分别为许多和形状。我们理解多态的含义是可以用多种方式执行单个活动。
假设我们想要为一种形状上色;我们有各种形状选择(正方形、五边形、圆形)。但是,我们可以使用相同的方法为任何形状上色。这个概念被称为多态。
例子
以下是Python中多态的示例
输出
上面的代码定义了两个类 Lion 和 Dog,它们都共享 Roar() 方法。但是,它们的角色是不同的。
为了使用多态,我们构建了一个通用的接口,叫做 sound_test(),它接受任何对象并调用其 Roar() 方法。因此,当我们把 pet 和 street 对象传递给它时,sound_test() 函数按预期工作。
数据抽象
数据抽象和封装经常被用作同义词。由于数据抽象是通过封装来实现的,因此这两个术语几乎是同义词。
在使用抽象时,内部细节被隐藏,只显示功能。将事物命名为捕获一个函数或整个程序所做的核心的名称是抽象化的过程。