Python程序设计案例教程第8章 Python面向对象教学课件.pptx
《Python程序设计案例教程第8章 Python面向对象教学课件.pptx》由会员分享,可在线阅读,更多相关《Python程序设计案例教程第8章 Python面向对象教学课件.pptx(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Python程序设计案例教程第8章 Python面向对象主 讲 人:X X X了解面向对象编程的概念。理解封装、继承、多态的概念。掌握Python中类的使用。能够分析问题并设计相应的类。能灵活使用系统及第三方提供的类库。01面向对象面向过程程序设计面向过程程序设计最早提出的结构化程序设计方法就是“面向过程程序设计”,其哲学就是将程序设计问题分解为描述问题的数据结构、以及解决问题的算法,该设计方法非常成功。“面向过程程序设计”很成功,那为什么还需要“面向对象程序设计”?这是因为在使用过程中发现“面向过程程序设计”有一些自身不能解决的问题,如:对大型软件项目的支持、代码的复用、数据与算法分离不符合
2、日常思维习惯、不便于问题的分析与建模等,为了解决上述问题,又提出了“面向对象程序设计”。下边通过Python语言学习相关的概念。面向对象程序设计(面向对象程序设计(Object Oriented Programming,OOP)是一种程序设计范式。)是一种程序设计范式。类和对象类和对象 类的定义类的定义 对象创建对象创建类和对象面向对象程序设计(Object Oriented Programming,OOP)是一种程序设计范式。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的过程中的行为。通俗一点讲,面向过程程序设计就是主要考虑解
3、决一个问题需要哪些步骤;而面向对象程序设计主要考虑解决一个问题需要哪些角色(对象)的参与,以及它们之间应该如何交互。面向对象程序设计实现了重用性、灵活性和扩展性。在面向对象程序设计中,有两种实现对象的方式,一种是基于原型、一种是基于类。Python语言使用的是基于类的实现方式。基于类的面向对象编程语言,是构建在两个不同实体概念上,即类和对象。类(class):类是具有相同属性和方法对象的抽象描述,形象的说所谓“类”就是开发者自定义的数据类型,属性就是这个类型的具体实例都包含的数据成员,方法是实例具有的行为。对象(object or instance):对象也称为实例,它通过类定义的数据结构实例
4、。对象包括由类中定义属性的具体值,和作用在这些具有具体值上的方法。我们需要为动物园开发一个管理动物的系统,比如说我们需要在程序中表示并处理“大象”这个种动物。大象作为一类动物,它有很多不同的个体,但是这些不同个体都具有相似的共性,也具有相似的行为。分析思路:分析思路:1.首先我们把同“大象”个体的共性提取出来,经过分析发现大象都有体重、体长等共通的属性,不同大象之间只是在这些共性的基础上有不同的取值而已,为了区别每一个大象我们还可能给大象一个编号或者名字。2.再来我们分析一下“大象”的都具有哪些共通的行为,经过分析发现大象都能进行的动作有移动、进食、休息等行为。行为都相同,只是每个行为的影响可
5、能有差别,比如成年大象可能移动得快一些,幼年象移动的慢一些等等。我们把分析的结果用图的方式表示出来。类的定义Python中提供了定义类的专用保留字(class)用于类的定义。语法格式如下:class 类名:类成员列表class保留字说明这里的代码是要定义一个类(class),class保留字后边的类名是这个类的标识符,类型需要符合python关于标识符的要求。类名后边接冒号(:),下边一行开始就是类的成员列表,包括类成员变量、类的方法等的定义。Python中为累添加属性有两种方式,一种是通过类属性为对象添加属性;一种方式是直接通过对象来添加属性。使用对象直接添加属性往往需要和一些特殊的方法配合
6、来使用,所以放到后边在学习了方法的定义后再许学习,这里我们先看看如何使用类属性来为对象添加属性。class 类名:属性名=初始值属性名=初始值.动物园中的每头大象,都有自己的名称、体重、体长等信息,如何使用类来管理这些信息?下边的代码展示的是通过类属性为对象添加三个属性。class elephant:name=名称#大象名称weight=重量#大象体重length=长度#大象长度dumbo=elephant()#创建一个大象类(elephant)的实例对象dumbo.name=丹波dumbo.weight=200kgdumbo.length=1mprint(dumbo.name,dumbo.w
7、eight,dumbo.length)类属性提供了统一定义对象属性的方式。但是类属性实际上不是对象的属性,而是类的属性,Python在使用类创建对象时,会拷贝一份类的属性作为对象的属性。这样就起到了定义对象属性的效果。这里要注意的是,类属性在其他语言中对应的概念是“类静态属性/类静态成员”,类属性更多的作用是存储同一个类所有对象共享的状态。要理解Python中的类属性与对象属性的关系可以参考下图。要注意的是,这个过程不是简单的拷贝属性值,而是一个比较复杂的属性查找过程,其中涉及python中类的特殊方法以及对象的特殊属性,如类的_getattribute_方法、对象的_dict_属性等,这里不
8、再展开。为了方便理解,我们可以简化为属性值的拷贝。类方法也被称为成员函数,它实际上是一种和特定类、以及类的实例对象绑定的函数,这种函数只能在类的内部定义,并且调用时需要类的实例对象来调用,我们先看如何在类中定义方法。class 类名:def方法名称(self,参数列表):方法代码定义方法实际上就是将函数定义放在类的块中,这样函数就是成为类的方法。除此之外,方法的第一个参数一定是self参数,self参数代表类的一个具体实例,而非类本身。class elephant:name=名称weight=重量length=体长#大象类的移动方法def move(self):print(大象name正在移动
9、.format(name=self.name)dumbo=elephant()dumbo.name=丹波dumbo.move()这里定义一个移动方法(move)。只有一个代表当前具体对象的self参数。该方法只是简单的根据当前对象的信息打印出当一段文字。这里self参数实际就是表示当前是哪个对象在调用方法,详细见后边对象章节。前边说过为对象添加属性有两种方法,一种是使用类属性,还有一种就是通过对象直接添加对象属性。在Python中类的实例对象在创建后,是可以继续添加属性的。我们看看下边这个例子。我们使用空的大象类来创建两个对象,并为其中一个对象添加类中没有的属性。代码实现:class elep
10、hant:passdumbo=elephant()nangi=elephant()dumbo.weight=200kgprint(dumbo.weight)print(nangi.weight)可以看出,dumbo 和nangi 都是使用空的elephant类创建的对象。在创建后,我们使用赋值语句为dumbo对象添加了一个属性,而nangi 对象没有添加。最后输出对象的体重(weight)属性,可以看到dumbo对象正确的输出了体重(weight)属性的值“200kg”,在输出nangi对象体重(weight)属性时抛出了属性异常。从这个例子可以看出,对象在创建后可以继续添加原来没有的属性;添
11、加的属性只对当前对象有效。如果我们通过对象来添加属性很可能出现,同一个类的不同对象之间有不同的属性。那么我们如何使用对象添加属性的同时,又保证所有同一个类的对象拥有相同的属性。解决这个问题,我们需要用到一个特殊的方法初始化方法(_init_),该方法在创建类实例对象的时候会自动调用一次,也被称为构造方法。在该方法中通过为self参数代表一个实例对象,来为当前类添加属性。我们通过初始化方法为大象添加三个属性。class elephant:def _init_(self,name,weight,length):self.weight=weight#体重 self.length=length#长度s
12、elf.name=name#名称#大象类的移动方法def move(self):print(大象name正在移动.format(name=self.name)这里初始化方法(_init_)除了接收表示当前对象的self参数外,还声明了三个参数分别代表名称、体重、体长,并通过赋值的方式给self所代表的对象添加属性。前边说过初始化方法(_init_)会在对象创建时会自动调用一次。那么,我们定义_init_函数时声明的三个参数是该如何传递给初始化方法(_init_)。前边创建对象时,使用类名的方式和函数调用很相似,实际上在创建对象时确实也是在调用函数,确切的说是调用的方法初始化方法。在Python
13、中在创建对象传递参数的方式如下:对象名=类名(参数列表)创建对象时,传递初始化参数。代码实现:dumbo=elephant(丹波,200kg,1m)dumbo.move()参数传递的过程可以参考下图:对象创建在定义好类以后,我们可以通过类名来创建类的实例,也就是对象。在Python中创建对象的方式如下:对象名 =类名(参数列表)对象名就是一个表示被创建类实例的标识符,可以简单的认为是变量名。我们可以通过对象名操作与之对应的对象实例。注意对象名不是对象本身,只是对象的代号,也被称为对象引用。我们使用前边定义的大象类来创建一个对象,并使用dumbo作为对象名。dumbo=elephant(丹波,2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python程序设计案例教程第8章 Python面向对象教学课件 Python 程序设计 案例 教程 面向 对象 教学 课件
限制150内