当前课程知识点:Python 交互式程序设计导论 >  第6周 >  A 课程视频(类) >  面向对象编程(类和对象入门)

返回《Python 交互式程序设计导论》慕课在线视频课程列表

面向对象编程(类和对象入门)在线视频

面向对象编程(类和对象入门)

下一节:面向对象编程(类和对象进阶)

返回《Python 交互式程序设计导论》慕课在线视频列表

面向对象编程(类和对象入门)课程教案、知识点、字幕

python有一些内置数据类型,如:字符串,列表,字典,集合等。

这些数据类型都有自己的方法,允许我们对其进行灵活的操作, 使用起来非常方便。

数据类型的方法定义了其操作方式, 以及对封装在类型中的数据可进行的操作。

每个对象都包含一些数据,我们能做什么是 由特定的数据类型所提供的方法决定的。

我们使用python已提供的数据类型就已经 可以编写出一些非常有用的项目。

然而,可以编写自己的数据类型是具有非常重要意义的。

面向对象程序设计,是围绕对象来设计的。

我们要做的是对这些对象创建新的数据类型。

在类型中封装一些数据,还可以增加一些方法。

通过这些方法来实现对这个类型的对象可进行的操作。

如果我们这样去做了,我们的程序将具有更多的功能。 更加的灵活,将使处理问题变得更加的简单。

好,下面我们就看如何来创建自己的数据类型。

让我们看一看我们新创建的对象是什么样的。

我打算定义一个新的数据类型,叫做Student。

也就是我们的学生类,大家都知道每个学生都有许多信息, 例如学号,姓名,性别,学院等。

我打算把这些信息都封装在我新创建的类型当中。

python和其他许多编程语言一样, 当你定义一个新的类型时它被叫做类。

那么英文单词叫class,所以要用class来定义新创建的类。

然后给类起个名字,我们定义的叫学生类,所以我起的名字叫Student。

Python习惯上将类名首字母大写,所以我的Student首字母已经大写。

定义完类名后记得最后加上冒号作为结束。

定义好类之后我们就可以定义一系列的方法。

那么,在这里我定义了5个方法。

这些方法看起来跟函数很像,我们没有叫它们函数的唯一原因是。

它们是被定义在类结构里的,它们只能操作Student这个类型的对象。

而不能通过其他方法直接被调用。

对于前两个方法,__init__方法和__str__方法,大家注意:

__init__方法和__str__方法前后分别有两个英文的下划线。

__init__方法被称作初始化器,也可以叫做构造函数。

在这里我们传入了5个参数self,student_id就是学号, name就是姓名,sex就是性别,college就是学院。

Self比较特殊,我们暂时忽略它,过会儿再解释。

其余四个实参分别设定了这个类型对象的学号,姓名,性别,学院

变量self实际上是一个新的对象的引用。

那么在python中我们习惯在这个变量使用self, 当然你也可以使用别的变量名。

下面我们要做的,就是创建该对象使用的域。通过点对域进行引用。

self.id就是说,id是self中的一个域。

我们将student_id这个实参赋值给self.id

同样我们还可以建立一个域叫name, 通过self.name对name这个域进行引用。

将实参name赋值给self.name。

大家可以看到我们的实参和这个域名字可以不同,也可以相同。

那么self.sex=sex,这是域sex的一个引用。那么这是性别

self.college=college那么这是学院这个域的引用和赋值。

最后我们又增加了一个course,称之为选修这样的一个域。

我们初始化为空列表,完成了所有域的初始化工作,注意:

在这里__init__方法没有返回任何东西, 那么这个构造函数是用来建立self这个新对象的。

它不需要返回任何值。

对于__str__这个方法它需要一个参数self。

那么这两个带下划线的方法我们不需要直接调用, 它们是在后台由python直接调用的。

对于__str__这个方法我们做的操作就是返回了这个对象中的所有信息。

好,我们看后面三个方法。

对于第三个方法我们把它称之为选修课方法,它跟了两个参数,

一个是self一个是course,也就是我们的课程。

我们通过点来引用course这个域,self.course, 因为它在初始化的时候被定义为列表。

所以我们又可以使用列表的方法,self.course.append方法 将我们的课程加入到选修课的列表当中。

那么第四个方法get_name,也就是获取名字这个方法, 它的参数只有一个self,它很简单只要返回self.name就可以了。

第五个方法get_sex,那么它也只有一个参数是self, 它也很简单就是返回self.sex。

当完成student类的定义之后,我并没有告诉别人 如何使用我新创建的类。

那么这正是面向对象程序设计的优势所在。

我可以只定义这个类而不用担心别人怎么使用它。

使用类的唯一方法是调用这些我已经建立好的方法。

所以我定义了一个接口,大家只要按照这些接口的 使用方法来使用就可以了。

下面代码的折叠部分是对Student类的一个使用。

当我在使用新类时我并不担心其中的方法具体是如何实现的, 我只需要知道它有哪些方法。

就像我前面用到的course它是一个列表,我知道它里面有一个append方法, 它会将我的课程添加到course列表当中。

那我只要去使用它就可以了, 而不需要具体了解append这个方法是如何操作的。

好,我们打开这个实例。

我们将方法的具体实现折叠起来。

我们是如何创建一个新类型对象的呢?

类名就变成了一个构造函数。

当我想创建一个新的Student对象时,我调用Student这个类

就像普通的调用函数一样。

那么在这里我传入四个参数,学号,姓名,性别,学院,

注意:在这里我没有传入self,self是不需要被传入的。

那么它是在后台处理的。

即使这个初始化函数没有返回任何值, 那么其实它返回了我刚刚创建的新的对象student。

下面我调用了这个__str__方法,它是输出我的基本信息。

第三行我进行了一个课程的选修,我选择了python,用来一个select方法。

第四行对我的信息再次进行输出。

第五行我又选修了一次课程,用select方法选择了Java。

那么第六行我又对我的信息进行了一个输出。

第七行我使用get_name方法获取了我的名字, 对它进行了一个输出,我使用get_sex方法获取了我的性别。

对它进行了输出,好,我们来运行。

那么当我输入参数以后输出我的信息

那么第一行学号:001 ,姓名:寇晓斌, 性别:男,所属院系:计算机学院,所选课程:空

当我完成一次选课以后,那么前面的信息没有改变,

在我的选修课程列表中增加了一门课程python

当我再次完成一门课程的选修以后,前面的所有课程没有改变, 在选修课程里面我又增加了一门java。

当我用get_name方法获取姓名的时候进行输出, 那我得到了我的姓名-寇晓斌。

当我用get_sex方法获得性别进行输出以后,我得到了我的性别-男

这就是我们定义和使用自己创建的类的方法, 希望大家通过实践去创建更有趣的东西。

好,我们的内容就到这里。

Python 交互式程序设计导论课程列表:

第0周

-课程简介

--课程简介

-A 课程视频(算数操作符及表达式)

--绪论

--Python交互式解释器使用方法

--PyCharm集成开发环境介绍

--算数操作符及表达式

-B 课程视频(变量及赋值)

--变量

--项目提交

--“我喜欢Python”热身小项目

-C 辅助视频(计算机结构、Python开发环境安装)

--Windows平台安装Python开发环境

--Mac平台安装Python开发环境

-D 辅助视频(如何提交项目)

--项目提交

-第0周--小测验

-本周项目:"我喜欢Python"

--项目发布、完成、提交及评分流程

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

--项目提交

第1周

-A 课程视频(函数)

--函数

--其它操作符

--随机函数

-B 课程视频(逻辑及表达式)

--逻辑值和比较

--条件

--编程技巧

--“老虎杠子鸡虫”游戏

-第1周--小测验

-本周项目:“老虎杠子鸡虫”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第2周

-A 课程视频(Python交互式应用)

--事件驱动编程

--事件可视化跟踪执行

--SimpleGUITk

--按钮

-B 课程视频(输入框、全局变量)

--输入框

--局部变量和全局变量

--编程技巧

--“猫咪藏在哪个房间”游戏

-第2周--小测验A

-第2周--小测验B

-本周项目:猫咪藏在哪个房间

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第3周

-A 课程视频(画布绘图)

--画布和图形绘制

--字符串处理

--绘图和计时器可视化跟踪执行

--图片和音效

-B 课程视频(计时器)

--计时器

--交互式绘图

--“神奇时钟”游戏

--编程技巧

-第3周--小测验A

-第3周--小测验B

-本周项目:“神奇时钟”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第4周

-A 课程视频(列表)

--列表

--键盘输入

--列表及变化可视化跟踪执行

--碰撞和反射

-B 课程视频(键盘控制)

--速度控制

--运动

--编程技巧

--“桌上冰球”游戏

-第4周--小测验A

-第4周--小测验B

-本周项目:“桌上冰球”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第5周

-A 课程视频(鼠标输入、列表进阶)

--鼠标输入

--Video

--Video

--Video

-B 课程视频(字典和图片)

--Video

--Video

--Video

--Video

-第5周--小测验A

-第5周--小测验B

-本周项目:“世界杯八强连连看”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第6周

-A 课程视频(类)

--面向对象编程(类和对象入门)

--面向对象编程(类和对象进阶)

--对象可视化跟踪执行

--华容道中的类

-B 课程视频(平铺图片)

--平铺图片

--理解对象

--编程技巧

--“华容道”游戏

-第6周--小测验A

-第6周--小测验B

-本周项目:“华容道”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第7周

-A 课程视频(类进阶及文件操作)

--集合

--文件操作

--文字块类

--处理停止的文字块

-B 课程视频(游戏状态控制)

--游戏记分规则

--游戏结束的条件及处理

--编程技巧

--“决战三字经”游戏

-第7周--小测验A

-第7周--小测验B

-本周项目:决战三字经

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

第8周

-A、课程视屏(精灵集合)

--Video

--精灵类

--战士类

--编程技巧

-B、课程视屏(动画)

--精灵碰撞

--精灵动画

--编程技巧

--保卫家园游戏

-第8周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

面向对象编程(类和对象入门)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。