1、单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,任务八 面向对象编程,面向对象编程,类和对象,构造方法和析构方法,self,的使用,运算符重载,了解,掌握,掌握,掌握,学习目标,了解,面向对象编程思想,1,2,掌握,类和对象的定义和使用,掌握,self,的使用,3,4,掌握,构造方法的使用,01,面向对象编程概述,02,类和对象,03,构造方法和析构方法,目录页,04 self,的使用,05,运算符重载,过渡页,01,面向对象编程概述,02,类和对象,03,构造方法和析构方法,04 self,的使用,05,运算符重载,01,面向对象编程概述,面向对象,程序员
2、面向对象,”,在现实世界中存在各种不同形态的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象间的关系来描述事物之间的联系,,这种思想就是面向对象,。,编程思想,实现步骤,特点,面向过程,开始游戏,先分析解决问题的步骤,使用函数把这些步骤以此实现,使用的时候需要逐个调用函数,黑子先走,绘制画面,轮到白子。,绘制画面,判断输赢,返回步骤,2,输出最后结果,面向对象,黑白双方:这两方的行为一样,把解决问题的事物分为多个对象,对象具备解决问题过程中的行为,棋盘系统:负责绘制画面,规则系统:负责判断诸如犯规、输赢等。,分别使用面向过程和面向对象来实现五子棋,面向
3、对象,若加入悔棋功能,面向过程和面向对象,分别怎么实现呢?,面向过程,面向对象,从输入到判断到显示的一系列步骤都需要改动,只需要改动棋盘对象就可以,更简便!,面向对象,过渡页,01,面向对象编程概述,02,类和对象,03,构造方法和析构方法,04 self,的使用,05,运算符重载,02,类和对象,类和对象的关系,面向对象编程有两个非常重要的概念:类和对象。,对象,是面向对象编程的核心,。,具有相似特征和行为的事物的集合统称为,类,对象是根据类创建的,,,一个类可以对应多个对象,。,类和对象的关系,可以把玩具模型看作一个,类,把每个玩具看作一个,对象,类的定义,类是由,3,部分组成的:,类的,
4、名称,:类名,首字母必须大写,比如,Person,。,类的,属性,:一组数据,比如性别。,类的,方法,:允许进行操作的方法,比如说话。,类的定义,使用,class,关键字来声明一个类,基本格式如下,:,class,类名,:,类的属性,类的方法,语法格式,根据类创建对象,根据类,创建对象,的语法格式如下:,对象名,=,类名,(),要想给对象,添加属性,,可以通过如下方式:,对象名,.,新的属性名,=,值,过渡页,01,面向对象编程概述,02,类和对象,03,构造方法和析构方法,04 self,的使用,05,运算符重载,03,构造方法和析构方法,构造方法,构造方法指的是,_init,_,_,方法。
5、当创建类的实例的时候,,,系统会自动调用构造方法,,从而实现对类进行初始化的操作。,构造方法,class Car:,def _init_(self):,self.color=“,黑色,”,def toot(self):,print(%s,的车在鸣笛,.%(self.color),bmw=Car(,雪山白,),析构方法,当删除一个对象来,释放类所占用资源,的时候,,Python,解释器默认会调用另外一个方法,这个方法就是,_del_(),方法,。,_del_,方法被称为析构方法。,过渡页,01,面向对象编程概述,02,类和对象,03,构造方法和析构方法,04 self,的使用,05,运算符重载
6、04 self,的使用,self,的使用,在,方法的列表,中,第,1,个参数永远都是,self,。,self,的字面意思是自己,我们可以把它当做,C+,里面的,this,指针理解,表示的是,对象自身,。,当某个对象调用方法的时候,,Python,解释器会把这个对象作为第,1,个参数传给,self,,开发者只需要传递后面的参数就可以了。,self,的使用,class Dog:,def _init_(,self,newColor):,self.color=newColor,def printColor(,self,):,print(,颜色为:,%s%self.color),dog1=Dog(,白
7、色,),dog1.printColor(),示例:,过渡页,01,面向对象编程概述,02,类和对象,03,构造方法和析构方法,04 self,的使用,05,运算符重载,05,运算符重载,运算符重载,是通过实现特定的方法使类的实例对象支持,Python,的各种内置操作,。,例如,:,+,运算符是类里提供的,_add_,这个函数,,当调用,+,实现加法运算的时候,实际上是调用了,_add_,方法。,运算符重载,运算符重载,方法,说明,何时调用方法,_add_,加法运算,对象加法:,x+y,,,x+=y,_sub_,减法运算,对象减法:,x-y,,,x-=y,_,_mul_,乘法运算,对象乘法:,x
8、y,,,x*=y,_diy,_,_,除法运算,对象除法:,x/y,,,x/=y,_getitem_,索引,分片,xi,、,xi:j,、没有,_iter_,的,for,循环等,_setitem_,索引赋值,xi=,值、,xi:j=,序列对象,_delitem_,索引和分片删除,del xi,、,del xi:j,加法运算符重载,加法运算是通过调用,_add_,方法完成重载的,当两个实例对象执行加法运算时,自动调用,_add_,方法。,z=x+y,执行加法运算,实质是调用,_add_,方法,索引和分片重载,跟索引相关的重载方法包括如下,3,个:,_getitem_,:索引、分片;,_setite
9、m_,_,:索引赋值;,_delitem_,:索引和分片删除。,1.,_getitem_,方法,在对实例对象执行索引、分片或者,for,迭代操作时,会自动调用,_getitem_,方法,。,索引和分片重载,#,定义索引、分片运算符重载方法,def _getitem_(self,index):,return self.dataindex,2.,_setitem_,方法,通过赋值语句给索引或者分片赋值时,调用,_ setitem _,方法实现对序列对象的修改,。,索引和分片重载,def _setitem_(self,index,value):,self.dataindex=value,3.,_delitem_,方法,当调用,del,方法时,实质上会调用,_delitem_,方法实现删除操作,。,索引和分片重载,def _delitem_(self,index):,del self.dataindex,本次课小结,本,次课,首先介绍了面向对象编程的基本知识,包括面向对象概述、,类和对象,、,根据类创建对象,,然后介绍了,构造方法,和析构方法的使用,然后又介绍了,self,和,_str_,方法的简单使用,最后开发了一个反恐游戏的案例。通过对本章内容的学习,大家对面向对象应该有初步的了解,为后面面向对象深入的学习做好铺垫。,






