Python程序设计基础项目化教程 课件 项目8 类与对象_第1页
Python程序设计基础项目化教程 课件 项目8 类与对象_第2页
Python程序设计基础项目化教程 课件 项目8 类与对象_第3页
Python程序设计基础项目化教程 课件 项目8 类与对象_第4页
Python程序设计基础项目化教程 课件 项目8 类与对象_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

筐鱼梧领凤峡匪跑脚凡辅乒踪勿久褂舟婴袭剪肚爹伦甄啸镣娟附卉态再骂广东农工商职业技术学院PPT模板-精美原创毕业论文答辩广东农工商职业技术学院PPT模板-精美原创毕业论文答辩项目8类与对象目录|CONTENT1项目介绍2项目目标3项目准备4项目实施项目介绍项目背景面向对象是程序开发领域的重要思想,这种思想模拟了人类认识客观世界的思维方式,将开发中遇到的事物皆看作对象。面向对象开发方法认为客观世界是由对象组成的,对象由属性和操作组成,对象可按其属性进行分类,对象之间的联系通过传递消息来实现,对象具有封装性、继承性和多态性。项目介绍项目背景在Python中,所有的数据(包括数字和字符串)实际上都是对象。我们可以使用type()函数来获取关于对象的类型信息。>>>n=5>>>type(n)<type'int'>>>>s="hi">>>type(s)<type'str'>>>>t=True>>>type(t)<type'bool'>项目介绍项目规划01理解面向对象编程思想及其三大特性02掌握类和对象的关系、类的属性和方法03熟练设计和使用类目录|CONTENT1项目介绍2项目目标3项目准备4项目实施项目目标知识目标1理解面向对象的设计思想和类、对象的相关概念2掌握类的属性、类的方法、对象的创建与初始化方法、析构方法、可变对象和不可变对象3理解运算符的重载项目目标能力目标1熟练掌握类的设计和使用2会使用运算符的重载3熟悉使用面向对象思想解决问题的方法目录|CONTENT1项目介绍2项目目标3项目准备4项目实施项目准备1.类的定义类(class)是广义的数据类型,能够定义复杂数据的特性,包括静态特性(即数据抽象)和动态特性(即行为抽象,也就是对数据的操作方法)。一个Python类使用变量存储数据域,称为类中的属性;定义方法来完成动作。对象是类的一个实例,一个类可以创建多个对象。创建类的一个实例的过程被称为实例化。项目准备1.类的定义(1)类是对象的抽象,而对象是类的具体实例;(2)类是抽象的,而对象是具体的;(3)每一个对象都是某一个类的实例;(4)每一个类在某一时刻都有零或更多的实例;(5)类是静态的,它们的存在、语义和关系在程序执行前就已经定义好了,对象是动态的,它们在程序执行时可以被创建和删除;(6)类是生成对象的模板。类和对象(实例)的关系:项目准备1.类的定义Python中类定义的语法格式如下:class<类名>:

类属性1……

类属性n<方法定义1>……<方法定义n>项目准备2.类的属性类的属性有两种:类属性和实例属性(对象属性)。类属性是在类中方法之外定义的,如have_scale、way_of_reproduction、way_of_sound均属于类属性。类属性的修改可以通过“类名.属性名”访问。项目准备3.类的方法在Python3中,如果没有为一个新创建的类指明父类,则这个类默认从object类直接继承而来。实例的构造与初始化涉及两个方法:__new__()和__init__()。当实例化一个类对象时,最先被调用的是__new__()方法。__new__()方法用于创建对象,而__init__()方法是在对象创建完成之后初始化对象状态。__new__()方法创建完对象后,将该对象传递给__init__()方法中的self参数。1)实例的构造与初始化项目准备3.类的方法__new__()方法是一个静态方法,在object类中已经定义。如果类定义中没有重写该方法,将使用从父类继承而来的__new__()方法。__init__(),用于为属性设置初值,在创建对象时自动执行。如上例的Person类,在__init__()方法中初始化了姓名、年龄、体重、身高等信息。如果一个类中没有提供__init__()方法,Python将提供一个默认的__init__()方法。子类如果想调用父类(基类)的__init__()方法,必须显式调用,否则子类的__init__()方法不会自动调用父类的__init__()方法。1)实例的构造与初始化项目准备3.类的方法1)实例的构造与初始化类的定义和对象的构造项目准备3.类的方法Person类中的getName(self)、getAge(self)方法,都是实例方法。类中定义的实例方法都必须以self作为第一个参数,这个参数表示当前是哪一个实例对象要执行类的方法,这个实参由Python隐含地传递给self。例如语句p.getName(),在方法getName中,p被传递给self。2)类的实例方法项目准备3.类的方法与类的属性一样,实例方法也有访问权限,可分为3种:私有方法、保护方法和公有方法。以单下画线开头的方法是protected类型的,只允许其本身与子类进行访问,也不能用于frommoduleimport*。双下画线开头的是私有方法,只允许这个类本身进行访问。开头既没有单下画线,也没有双下画线的方法是公有方法,允许任何对象进行访问。公有方法就可以通过对象名调用。其调用形式为:“对象名.公有方法(<实参>)”。3)实例方法的访问权限项目准备3.类的方法Python中类的析构方法是__del__()方法,用来删除对象以释放对象的内存空间。如果用户未提供析构方法,Python将提供一个默认的析构方法。定义了__del__()方法的类对象无法被Python的循环垃圾收集器收集,所以在自己创建的类中尽量不要自定义__del__()方法。4)析构方法项目准备3.类的方法直接访问数据域可能会带来一些问题。如可能直接设置成不合法的值,例如tri.base=0,将三角形的底复制为0。数据不仅直接被篡改,也会导致类难以维护并且易于出错。为了避免客户端直接修改属性的问题,我们提供get方法返回值,set方法设置新值。通常get方法被称为获取器或访问器,set方法被称为设置器或修改器。通过get和set方法,以及私有属性,保证了类中数据的安全。5)get和set方法项目准备4.运算符的重载面向对象程序设计过程中,由于对象数据结构的复杂性,使得内置运算符不能完全满足功能需求。例如:一个学生类,包含的数据包括年龄,学号等信息。当比较两个学生对象的大小时,比较运算符就无法获知应该以学生对象的哪些信息(年龄?学号?)为比较基准。因此,Python中可通过运算符重载来实现对象之间的运算。目录|CONTENT1项目介绍2项目目标3项目准备4项目实施项目实施任务8.1打印实例输出属性值列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表带有很多操作方法,reverse倒序就是其中一个,本次实验通过调用reverse来了解python中的列表。项目实施任务8.1打印实例输出属性值建立“打印实例输出属性值.py”文件,用于编写Python实验程序。编写任务代码。#定义一个Person类,并实现其__repr__内置方法,使其返回实例name属性的值,从而实现直接打印实例时输出其name属性的值classPerson:def__init__(self,name):=namedef__repr__(self):return

#编写程序主入口,创建两个Person类的实例,并将两个实例直接打印if__name__=='__main__':person1=Person('Tom')person2=Person('Jerry')print(person1)print(person2)项目实施任务8.1打印实例输出属性值执行程序①用鼠标右键单击右侧编辑窗口,在菜单中选择“Run‘python主程序所在文件名’”一项执行编写好的Python程序,本次实验文件名为”打印实例输出属性值”②在IDE下方控制台查看输出结果课后练习与技能训练一、填空题练习1.类和对象的关系即数据类型与变量的关系,规定了可以用于存储什么数据,而用于实际存储数据,每个对象可存储不同的数据。2.类中包含属性和方法。

对应一个类可用来保存哪些数据,而

对应一个类可以支持哪些操作(即数据处理)。3.

,是指在类内可以直接访问、而在类外无法直接访问的属性。课后练习与技能训练一、填空题练习4.构造方法是Python类中的内置方法之一,它的方法名为

,在创建一个类对象时会自动执行,负责完成新创建对象的初始化工作。5.

是类的另一个内置方法,它的方法名为__del__,在销毁一个类对象时会自动执行,负责完成待销毁对象的资源清理工作,如关闭文件等。6.__str__方法的返回值必须是

。课后练习与技能训练二、选择题练习1.关于类和对象说法正确的是()根据一个类可以创建多个对象,而每个对象只能是某一个类的对象根据一个类只能创建一个对象,而每个对象只能是某一个类的对象根据一个类可以创建多个对象,而每个对象可以属于多个类根据一个类只能创建一个对象,而每个对象可以属于多个类课后练习与技能训练二、选择题练习2.下列关于构造方法的说法错误的是()A.构造方法是Python类中的普通方法之一,在创建一个类对象时会自动执行,负责完成新创建对象的初始化工作B.构造方法中,除了self,也可以设置其他参数C.构造方法的参数只能是selfD.构造方法也可以设置默认参数课后练习与技能训练二、选择题练习3.进行self>=other运算时自动执行哪个内置方法()A.__gt__(self,other)B.__lt__(self,other)C.__ge__(self,other)D.__le__(self,other)课后练习与技能训练三、简答题练习1.写出下面程序的输出结果。classStudent:name='Unknown'age=0if__name__=='__main__':print('姓名:',S)print('年龄:',Student.age)stu=Student()print('stu姓名:%s,年龄:%d'%(,stu.age))S='张三'Student.age=18print('stu姓名:%s,年龄:%d'%(,stu.age))='李四'stu.age=19print('stu姓名:%s,年龄:%d'%(,stu.age))课后练习与技能训练三、简答题练习2.定义Circle类,要求:

温馨提示

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

评论

0/150

提交评论