数据结构论坛

首页 » 分类 » 分类 » Python进阶记录之基础篇十五
TUhjnbcbe - 2025/5/21 16:43:00
白癜风该怎么治 http://www.bdfyy999.com/

回顾

在Python进阶记录之基础篇(十四)中,我们介绍了Python中模块的基本概念以及导入方法,需要重点掌握模块的意义和用法。今天开始,我们分几次内容讲一下Python中面向对象的相关知识点。

面向对象的基本概念

面向对象是一种软件开发方法,其核心思想主要有三大要素:封装、继承和多态。软件开发中,面向对象是相对于面向过程而言的。下面,我们以一个简单的例子看一下面向过程和面向对象在程序流程上的区别。

假设现在我们要打印学生的选课情况,为了存储一个学生的选课情况,面向过程的程序可以使用字典的方式,同时使用函数来打印学生的选课情况。

面向过程实现

可以看到,面向过程的程序是一系列的命令集合,它注重的是程序的执行流程。而面向对象则不会注重程序的执行流程,而是会优先考虑把每个学生作为一个个的对象。

面向对象实现

以上代码将学生抽象成一个类,其中有name和course两个属性,同时有一个打印课程的函数print_course()。当我们要打印学生的选课情况时,首先是创建出一个学生对象,然后使用该对象去调用打印方法。

面向对象的设计思想是从自然界中来的,类是一种抽象概念,比如上述代码我们定义的Student,可以看成所有学生的集合,而对象则是一个个具体的学生,比如,A和B就是两个具体的Student。

类和对象

类和对象是面向对象中最重要的概念。类是对象的模板,而对象是类的实例。通俗点讲就是,类是抽象的概念,而对象是具体的东西。

在面向对象的世界中,一切皆为对象,对象都有属性和方法(类中的函数我们一般称为方法),每个对象都是独一无二的,并且一定属于某个类。当我们把拥有共同特征的对象的静态特征(属性)和动态特征(方法)都抽取出来后,就可以定义出一个类了。

类的定义Python中所有数据类型都是对象,都属于基类object,定义一个简单类的基本格式如下。

class类名(object):__init__(self,属性1,属性2,...,属性n):初始化方法1方法2...方法n我们以上述的Student为例,在之前代码的基础上再增加一些属性和方法。

类的创建

创建一个类首先使用关键字class,后面跟类名和括号,括号中填入父类。object是Python中的基类,如果把Python看成一个族谱的话,object相当于Python中的第一辈祖先。当父类是object的时候是可以省略的,上述代码中我们也可以不写object。

__init__()方法是一个特殊的方法,我们称为初始化构造方法,通过此方法可以为创建的对象绑定属性。__init__()方法的第一个参数永远是self,表示创建的对象本身,也正因为如此,我们可以在此方法内部把各种属性绑定到self。

print_course()函数和print_info()函数则是类的成员方法,这些方法就是对象可以接收的消息。和普通函数相比,成员方法只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。

至此,一个简单的类就定义完成了。

对象的创建和使用定义好类后,就可以根据类创建出对应的对象了,Python中创建对象的基本格式如下。

对象名=类名(属性1,属性2,...,属性n)上述代码我们已经定义了一个Student类,创建Student的对象只需要用类名+括号即可,其中括号中填入属性的赋值。因为在Student的__init__()方法中我们设置了属性,所以创建对象的时候必须传入相关参数。创建对象后,我们就可以通过点的形式对成员方法进行调用。

对象的创建和使用

通过上述代码,我们对面向对象做个概括。所谓面向对象,就是把一组数据结构和处理它们的方法组成对象,把相同行为的对象归纳为类。

面向对象通过类的封装隐藏内部细节,通过继承实现类的特化和泛化,通过多态实现基于对象类型的动态分派。

总结

以上内容介绍了面向对象的基本概念以及Python中类和对象的简单使用。如果你是刚开始接触面向对象,那么你甚至可能还无法完全理解上述代码,我们将在后续内容中继续对面向对象进行介绍,现在你需要掌握的是如何定义一个类,以及简单的创建对象和使用成员方法。感谢大家的支持与

1
查看完整版本: Python进阶记录之基础篇十五