Python程序设计基础项目化教程 课件 项目九 继承与多态_第1页
Python程序设计基础项目化教程 课件 项目九 继承与多态_第2页
Python程序设计基础项目化教程 课件 项目九 继承与多态_第3页
Python程序设计基础项目化教程 课件 项目九 继承与多态_第4页
Python程序设计基础项目化教程 课件 项目九 继承与多态_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

《Python语言程序设计》项目九继承与多态Contents继承的概念和实现继承的概念和实现super方法的使用isinstance、issubclass和type的使用什么是继承PART01继承和多态是面向对象程序设计的另外两个重要特性通过继承,可以基于已有类创建新的类,新类除了继承已有类的所有属性和方法,还可以根据需要增加新的属性和方法。通过多态,可以使得在执行同一条语句时,能够根据实际使用的对象类型决定调用哪个方法。继承与多态继承允许开发者基于已有的类创建新的类如果一个类C1通过继承已有类C而创建,则将C1称作子类(subclass),将C称做基类、父类或超类(baseclass、superclass)。子类会继承父类中定义的所有属性和方法,另外也能够在父类中增加新的属性和方法。如果一个子类只有一个父类,则将这种继承关系称为单继承如果一个子类有两个或更多父类,则将这种继承关系称为多重继承。什么是继承类的继承关系示例单继承:父类Person,子类Student和Teacher多重继承:父类Student和Teacher,子类TA子类继承父类的属性和方法子类可以增加新的属性和方法,对方法重新定义什么是继承如何继承父类PART02class子类名(父类名1,父类名2,…,父类名M):

语句1语句2…

语句N定义子类时需要指定父类,其语法格式为:当M等于1时,则为单继承;当M大于1时,则为多重继承。如何继承父类如何继承父类【任务描述】了解如何继承父类【关键步骤】了解如何继承父类示例011 classPerson:#定义Person类2 defSetName(self,name):#定义SetName方法3 =name#将self对应对象的name属性赋为形参name的值

4 classStudent(Person):#以Person类作为父类定义子类Student5 defSetSno(self,sno):#定义SetSno方法6 self.sno=sno#将self对应对象的sno属性赋为形参sno的值7 classTeacher(Person):#以Person类作为父类定义子类Teacher8 defSetTno(self,tno):#定义SetTno方法9 self.tno=tno#将self对应对象的tno属性赋为形参tno的值10 classTA(Student,Teacher):#以Student类和Teacher类作为父类定义子类TA11 defSetTeacher(self,teacher):#定义SetTeacher方法12 self.teacher=teacher#将self对象的teacher属性赋为形参teacher的值如何继承父类13 if__name__=='__main__':14 stu=Student()#定义Student类对象stu15 stu.SetSno('1810100')#调用Student类中定义的SetSno方法16 stu.SetName('李晓明')#调用Student类从Person类继承过来的SetName方法17 print('学号:%s,姓名:%s'%(stu.sno,))#输出学号和姓名18 t=Teacher()#定义Teacher类对象t19 t.SetTno('998012')#调用Teacher类中定义的SetTno方法20 t.SetName('马红')#调用Teacher类从Person类继承过来的SetName方法21 print('教工号:%s,姓名:%s'%(t.tno,))#输出教工号和姓名22 ta=TA()#定义TA类对象t23 ta.SetSno('1600125')#调用Student类中定义的SetSno方法24 ta.SetTno('T18005')#调用Teacher类中定义的SetTno方法25 ta.SetName('张刚')#调用Person类中定义的SetName方法26 ta.SetTeacher('马红')#调用TA类中定义的SetTeacher方法25 print('学号:%s,教工号:%s,姓名:%s,主讲教师:%s'%(ta.sno,ta.tno,,ta.teacher))如何继承父类示例01学号:1810100,姓名:李晓明教工号:998012,姓名:马红学号:1600125,教工号:T18005,姓名:张刚,主讲教师:马红程序执行完毕后,将在屏幕上输出如下结果:如何继承父类示例01方法重写PART03方法重写【任务描述】了解如何继承父类【关键步骤】了解如何继承父类示例021 classPerson:#定义Person类2 def__init__(self,name):#定义构造方法3 =name#将self对象的name属性赋为形参name的值4 defPrintInfo(self):#定义PrintInfo方法5 print('姓名:%s'%)6 classStudent(Person):#以Person类作为父类定义子类Student7 def__init__(self,sno,name):#定义构造方法8 self.sno=sno#将self对象的sno属性赋为形参sno的值9 =name#将self对象的name属性赋为形参name的值10 defPrintInfo(self):#定义PrintInfo方法11 print('学号:%s,姓名:%s'%(self.sno,))12 defPrintPersonInfo(person):#定义普通函数PrintPersonInfo13 print('PrintPersonInfo函数中的输出结果',end='#')14 person.PrintInfo()#通过person调用PrintInfo方法方法重写是指子类可以对从父类中继承过来的方法进行重新定义,使得子类对象可以表现出与父类对象不同的行为。方法重写示例0215 if__name__=='__main__':16 p=Person('李晓明')#创建Person类对象p17 stu=Student('1810100','李晓明')#创建Student类对象stu18 p.PrintInfo()19 stu.PrintInfo()20 PrintPersonInfo(p)21 PrintPersonInfo(stu)姓名:李晓明学号:1810100,姓名:李晓明PrintPersonInfo函数中的输出结果#姓名:李晓明PrintPersonInfo函数中的输出结果#学号:1810100,姓名:李晓明程序执行完毕后,将在屏幕上输出如下结果:方法重写示例02super方法PART04super([类名[,对象名或类名]])super方法用于获取父类的代理对象,以执行已在子类中被重写的父类方法,其语法格式为:super方法有两个参数:第一个参数是要获取父类代理对象的类名。第二个参数如果传入对象名,则该对象所属的类必须是第一个参数指定的类或该类的子类,找到的父类对象的self会绑定到这个对象上;如果传入类名,则该类必须是第一个参数指定的类的子类。在一个类A的定义中调用super方法时,可以将两个参数都省略,此时,super()等价于super(A,self),即获取A的父类代理对象,且获取到的父类代理对象中的self绑定到当前A类对象的self上。super方法super方法【任务描述】了解super方法的用途【关键步骤】了解super方法的用途示例031 classPerson:#定义Person类2 def__init__(self,name):#定义构造方法3 print('Person类构造方法被调用!')4 =name#将self对象的name属性赋为形参name的值5 classStudent(Person):#以Person类作为父类定义子类Student6 def__init__(self,sno,name):#定义构造方法7 print('Student类构造方法被调用!')8 super().__init__(name)#调用父类的构造方法9 self.sno=sno#将self对象的sno属性赋为形参sno的值10 classPostgraduate(Student):#以Student类作为父类定义子类Postgraduate11 def__init__(self,sno,name,tutor):#定义构造方法12 print('Postgraduate类构造方法被调用!')13 super().__init__(sno,name)#调用父类的构造方法14 self.tutor=tutor#将self对象的tutor属性赋为形参tutor的值15 if__name__=='__main__':16 pg=Postgraduate('1810100','李晓明','马红')#创建Postgraduate类对象pg17 print('学号:%s,姓名:%s,导师:%s'%(pg.sno,,pg.tutor))super方法使用示例super方法示例03Postgraduate类构造方法被调用!Student类构造方法被调用!Person类构造方法被调用!学号:1810100,姓名:李晓明,导师:马红程序执行完毕后,将在屏幕上输出如下结果:super方法示例03isinstance、issubclass和typePART05isinstance用于判断一个对象所属的类是否是指定类或指定类的子类;issubclass用于判断一个类是否是另一个类的子类;type用于获取一个对象所属的类。内置函数isinstance、issubclass和typeisinstance、issubclass和type【任务描述】了解isinstance、issubclass和type方法的用途【关键步骤】了解isinstance、issubclass和type方法的用途示例041 classPerson:#定义Person类2 pass3 classStudent(Person):#以Person类作为父类定义子类Student4 pass5 classFlower:#定义Flower类6 pass7 if__name__=='__main__':8 stu=Student()#创建Student类对象stu9 f=Flower()#创建Flower对象f10 print('stu是Person类或其子类对象:',isinstance(stu,Person))11 print('stu是Student类或其子类对象:',isinstance(stu,Student))12 print('f是Person类或其子类对象:',isinstance(f,Person))13 print('Student是Person类的子类:',issubclass(Student,Person))14 print('Flower是Person类的子类:',issubclass(Flower,Person))15 print('stu对象所属的类:',type(stu))16 print('f对象所属的类:',type(f))17 print('stu是Person类对象:',type(stu)==Person)18 print('stu是Student类对象:',type(stu)==Student)isinstance、issubclass和type示例04stu是Person类或其子类对象:Truestu是Student类或其子类对象:Truef是Person类或其子类对象:FalseStudent是Person类的子类:TrueFlower是Person类的子类:False

温馨提示

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

评论

0/150

提交评论