Python面向对象编程(上)

2022-11-16 14:08:02 浏览数 (1)

标签:Python

有几种不同的编程范式,面向对象编程(OOP)是Python语言中最流行的编程范式之一。

什么是对象?

在面向对象编程中定义的对象也称为“类(class)”,本质上是希望组合成单个实体的相关属性、函数和方法的集合。这也是为什么首先要创建一个对象。每当想在单个实体的名称下收集许多属性、函数和方法,因为它们在某种程度上是逻辑相关的,而对象就是实现这一点的好方法。

对象的经典定义通常涉及对蓝图(blueprint)的引用。蓝图与它描述如何构建的对象不同,但可以使用单个蓝图以完全相同的规范创建同一对象的多个版本。类似于函数是可重复的代码块,对象更进一步。函数有一个输入和一个输出,因此当到达输出时,代码停止重复。然而,对象保持活动状态,并随时准备对我们放入的任何情况做出反应,直到明确删除它。

注意,每当开始谈论可重复的代码块时,我们和“用户”之间的界限就开始模糊。对象和函数都用于简化编程,而不管是谁在使用它。在本文中,将对象的“用户”称为任何希望实例化创建的对象的程序员,但要知道,我们通常是自己的用户。

什么是对象的实例?

实例是对象的单个实现。它是在对象/类定义中编写的代码的可操作副本。对于那些已经了解数据库的人来说,可以想象一个对象是一个表,而一个实例是该表的一行,事实上,有一些成熟的Python包,比如SQLAlchemy,使用这种类比作为起点。

在蓝图隐喻中,实例是实际的事物本身,是我们根据其蓝图构建这个对象之后所做的,可以想象我们自己是地球上Person类的一个实例。代码可以调用、复制和创建任意数量的对象实例,它们都将按照在类定义/蓝图中规定的方式进行操作。创建对象实例的过程称为实例化。

Python面向对象编程实例

作者最喜欢的OOP、对象、实例以及如何思考这一切的例子是一个叫做小行星(Asteroids)的旧视频游戏。随着事情进展,有一艘飞船和越来越多的小行星要摧毁。考虑一下如何从DRY和WET的角度编写这个程序。

用最少的代码制作游戏的最简单方法不是为每个小行星编写代码,特别是因为我们希望每个小行星的行为基本相同。相反,将创建两个主要对象(蓝图),一个飞船(ship)对象和一个小行星(asteroid)对象。然后让玩家的进度决定屏幕上小行星对象的实例数。这些实例中的每一个都可以跟踪其内部状态,例如它的运行速度、是否损坏或没有使用从对象定义(蓝图)中复制的代码。

这个小行星游戏是在Python中练习面向对象编程的一个很好的练习。

让我们看看这些概念在一些可执行Python中的作用:

图1

未完待续......

0 人点赞