Python3程序设计(第3版) 课件 第7章 用类实现抽象和封装_第1页
Python3程序设计(第3版) 课件 第7章 用类实现抽象和封装_第2页
Python3程序设计(第3版) 课件 第7章 用类实现抽象和封装_第3页
Python3程序设计(第3版) 课件 第7章 用类实现抽象和封装_第4页
Python3程序设计(第3版) 课件 第7章 用类实现抽象和封装_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用类实现抽象和封装7.1面向对象编程概述面向对象编程概念7.1.1面向对象程序设计在程序中使用对象模拟现实中的事物,使用对象间的关系描述事物之间的联系,这种思想就是面向对象(ObjectOriented)。基于面向对象思想的程序设计方法称为面向对象程序设计(ObjectOrientedProgramming)。对象是数据和对其操作的封装体,对象间通过传递消息模拟现实世界中事物间的联系。面向对象VS面向过程面向过程(结构化)程序设计强调分析解决问题的步骤,用函数实现,调用函数完成特定功能,以算法为中心,在计算机内部描述数据,程序处理数据,可能出现正确的程序使用错误的数据。面向对象按照一定规则分为多个独立对象,通过调用对象方法实现多个对象相互配合,完成应用程序功能,当应用程序功能发生改变时,只需修改个别对象。对象和类的概念对象(Object)将客观世界中事务的数据及其操作进行封装的实体。将具有相同或相似性质的对象抽象成类(Class)。对象的抽象就是类,类的具体化就是对象。用类实现抽象和封装7.1面向对象编程概述面向对象编程特点7.1.21.封装性将数据和对数据的操作组织在一起,定义一个新类的过程是封装。封装是面向对象的核心思想,通过封装,对象向外界隐藏了实现细节,对象以外的事务不能随意获取对象的内部属性。封装提高了对象安全性,避免了外部错误对它的影响,减少软件开发可能发生的错误,降低软件开发难度。2.继承性继承描述类之间的关系,一个类共享一个或多个其它类定义的数据和操作。通过继承,可在无需重新编写原有类的情况下,对原有类的功能进行扩展。继承增强了代码复用,提高了开发效率,为程序的修改补充提供便利继承增加了对象间的联系,使用时需要考虑父类的改变对子类的影响。3.多态性传统的多态是指类中方法重载。Python不存在方法重载,其多态更多发生在继承过程中,当一个类中定义的属性和方法被其他类继承后,它们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在不同类中具有不同的语义。用类实现抽象和封装7.2创建类与对象创建类7.2.1创建对象7.2.2class类名:

类的属性(成员变量)

……

类的方法(成员方法)

……类名:类的名称,通常首字母大写。属性:描述事物的特征。方法:描述事物的行为。例7-1根据类创建对象:创建对象:对象名=类名()例如:dog=Dog()为对象添加属性:对象名.属性名=值例如:dog.weight=32例7-2类是对象的抽象,用于描述一组对象的共同特征和行为。对象的特征(属性)用成员变量描述,对象的行为(方法)用成员方法描述。用类实现抽象和封装7.3构造方法和析构方法构造方法7.3.1析构方法7.3.2__init__()方法,创建对象时自动调用该方法,用于完成对象数据成员设初值及初始化工作如未定义构造方法,Python会提供一个默认的构造方法。构造方法有两种情况:无参数的构造方法有参数的构造方法类的__del__()方法用来释放对象占用的资源。在Python收回对象空间之前自动执行。若不存在对象引用时,在Python收回对象空间之前自动执行。如未定义析构方法,Python会提供一个默认的析构方法进行必要的清理工作。例7-4__init__()和__del__()分别用于初始化对象的属性和释放对象所占用的资源。例7-3用类实现抽象和封装7.3构造方法和析构方法self参数7.3.3成员方法的第一个参数self,表示对象自身。当某个对象调用成员方法时,Python解释器会自动把当前对象作为第一个参数传给self,用户只需传递后面的参数就可以了。成员方法的第1个参数命名为self,但使用其他参数名也是合法的。用类实现抽象和封装7.3构造方法和析构方法成员变量和类变量7.3.4类中的变量分为成员变量(实例属性)和类变量(类属性)。成员变量在_init_()中定义,self为第1参数;类变量在类中方法之外定义。在类外部,成员变量属于对象,通过对象名访问。类变量属于类,可通过类名访问,也可通过对象名访问。用类实现抽象和封装7.3构造方法和析构方法类方法和静态方法7.3.51.类方法class类名:

@classmethod

def类方法名(cls):

方法体例7-82.静态方法class类名:

@staticmethoddef静态方法名():

方法体例7-10类中的方法分为3种:成员方法:第1个参数是self,构造方法和析构方法属于成员方法,由对象调用。类方法:类的方法,可通过对象名调用,也可通过类名调用。静态方法:类的方法,可通过对象名调用,也可通过类名调用。用类实现抽象和封装7.4类的继承继承的实现7.4.1继承描述的是事务之间的所属关系,通过继承可以使多种事务之间形成一种关系体系。动物猴子老虎狗class子类名(父类名):

类的属性

类的方法私有属性:以两个“__”开头的属性,只能在类的内部访问。私有方法:以两个“__”开头的方法,只能在类的内部访问。例7-11,例7-12用类实现抽象和封装7.4类的继承方法重写与super()7.4.2在继承中,子类自动拥有父类的方法。如父类的方法不能满足子类的需求,子类可以按照自己的方式重新实现从父类继承的方法,即方法的重写。重写使子类方法覆盖父类同名的方法。classAnimal:def__init__(self,isAnimal):self.isAnimal=isAnimaldefrun(self):print("父类Animal通用的run()方法")defshow(self):print("父类Animal的show()方法")classCat(Animal):def__init__(self):print("子类的构造方法")defrun(self):#方法重写

super().run()#super()方法print("子类cat重写的run()方法")ani=Animal(False)ani.show()cat=Cat()#子类的构造方法cat.run()cat.show()#父类方法在重写过程可以使用super()方法调用了父类的方法。super()方法主要用于在继承过程中访问父类的成员。用类实现抽象和封装7.4类的继承多继承7.4.3一个子类存在多个父类的现象即为多继承.class子类(父类):

属性描述

方法描述。Python支持多继承,一个子类同时拥有多个父类的共同特征,即子类继承了多个父类的方法和属性。classPhone:#电话类

defreceive(self):print("接电话")defsend(self):print("打电话")

classMessage:#消息类

defreceiveMsg(self):print("接收短信")defsendMsg(self):print("发送短信")

classMobile(Phone,Message):#手机类

pass

mobile=Mobile()mobile.receive()mobile.send()mobile.reveiveMsg()mobile.sendMsg()用类实现抽象和封装7.5类的多态在同一个方法中,这种由于参数不同而导致执行效果各异的现象就是多态。在Java或C#等强类型语言中,多态是指允许使用一个父类类型的变量来引用一个子类类型的对象来实现的。即根据引用子类对象特征的不同,得到不同的运行结果。Python的多态并不考虑对象的类型,而是关注对象具有的行为,根据被引用子类对象特征的不同,得到不同的运行结果。Python的多态并不要求继承的存在,但继承关系的存在,对多态起到约束作用,可以使程序更为健状。用类实现抽象和封装7.6运算符重载运算符重载是将运算符与类的方法关联起来,每个运算符对应一个指定的内置方法。Python通过重写一些内置方法,实现了运算符的重载功能。Python可以重载加、减、乘、除等运算,也可以重载打印、索引、比较等内置运算。1.加减法运算符重载

通过__add__()和__sub__()方法完成的。例7-162.__str__()和__ge__()重载

__str__()将对象转换为字符串。

__ge__()重载>=运算符。

例7-173.索引和切片重载(1)__getitem__()方法(2)__setitem__()方法(3)__delitem__()方法用类实现抽象和封装7.6运算符重载跟索引和切片相关的重载方法包括如下3个。(1)__getitem__()方法用于索引、切片操作,在对象执行索引、切片或者for迭代操作时,会自动调用该方法。(2)__setitem__()方法索引赋值,在通过赋值语句给索引或者切片赋值时,调用__setitem__()方法实现对序列对象的修改。(3)__delitem__()方法使用del关键字删除对象时,调用__delitem__()方法实现删除。用类实现抽象和封装7.7面向对象编程应用学生信息管理程序的实现实现学生信息的遍历、追加、修改、删除和排序功能:学生类Student,成员变量有id(序号),name(姓名),course(课程)。重载_repr_()方法。学生集合类StuList,承载多名学生信息。重载索引和切片方法。主控程序。用类实现抽象和封装7.8利用AI工具辅助阅读编程文档在IDLE环境下打开的帮助文档默认是英文文档,很多第三方库的文档也是英文文档。应用AI工具可以翻译技术文档,或者将复杂的专业术语和概念转换成易于理解的文字,帮助我们轻松地阅读和理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论