Python程序设计教程 课件 第6章 面向对象编程_第1页
Python程序设计教程 课件 第6章 面向对象编程_第2页
Python程序设计教程 课件 第6章 面向对象编程_第3页
Python程序设计教程 课件 第6章 面向对象编程_第4页
Python程序设计教程 课件 第6章 面向对象编程_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

第6章面向对象编程概述面向过程的编程——采用自顶向下、逐步细化的方法来解决问题,更加关注算法细节。通过函数实现模块化程序设计,每个函数的功能相对独立,函数间的关系尽可能简单。而函数内部则是由顺序、选择、循环3种基本结构组成,也就是结构化程序设计。面向对象的编程——把数据和处理数据的方法包装在一起,构成一个整体。客观事物被抽象成类(class),相当于建模。当需要处理具体事物时,由类创建对象(object),也称作创建了类的一个实例(instance),再通过对象来调用方法实现相应的功能。总结对比面向过程总结:面向过程是从程序的角度去思考:第一步做什么、第二步做什么优点:更符合计算机的思考方式,运行速度比较快缺点:难以组织大规模工程适用场景:对速度要求比较快、与硬件接触的软件:操作系统内核,驱动程序等面向对象总结:面向对象是从人的角度去思考:事物有什么特征、能进行什么操作优点:方便组织大规模的工程缺点:运行速度比较慢适用场景,对速度要求不高的上层应用软件:用户界面开发面向对象程序设计的基本特点抽象(abstraction)封装(encapsulation)继承(inheritance)多态(polymorphism)类和对象可以把类理解为创建对象的模具,根据使用需要事先设计好包含哪些属性和方法。这些属性和方法是对相似事物的共同特征进行抽象得到的,称为类的成员(member)。使用类来创建对象。类包括:标准库或第三方库中定义好的类用户根据需要自定义的类自定义类classCandidate:number=0def__init__(self,id,name):self.id=id=nameself.votes=0Candidate.number+=1definfo(self):print(self.id,,self.votes)defvote(self):self.votes+=1属性(数据成员)方法(函数成员)属性classCandidate:number=0def__init__(self,id,name):self.id=id=nameself.votes=0Candidate.number+=1definfo(self):print(self.id,,self.votes)defvote(self):self.votes+=1类属性:(1)定义在方法外(2)由该类创建的所有对象共有实例属性:(1)定义在方法内,前面有self.(2)不同对象的实例属性相互独立内置属性:如__dict__,无需定义方法classCandidate:number=0def__init__(self,id,name):self.id=id=nameself.votes=0Candidate.number+=1definfo(self):print(self.id,,self.votes)defvote(self):self.votes+=1①内置方法:名字固定,开头结尾都有双下划线②实例方法:(1)自定义方法(2)前面无标记③类方法④静态方法内置方法内置方法功能描述__init__(self,…)构造方法,初始化对象,在创建新对象时调用__del__(self)析构方法,释放对象,在对象被删除前调用__new__(cls,*args,**kwd)初始化实例__str__(self)返回一个字符串,在使用print()函数输出对象时被调用__getitem__(self,key)获取序列的索引key对应的值self[key]__len__(self)在使用len()函数显示对象的长度时被调用__cmp__(src,dst)比较两个对象src和dst__getattr__(self,name)获取name属性值__setattr__(self,name,value)设置name属性值为value__delattr__(self,name)删除name属性__call__(self,*args)把对象作为函数调用,对象名后面加括号时被调用__gt__(self,other)判断self对象是否大于other对象__lt____(self,other)判断self对象是否小于other对象__ge__(self,other)判断self对象是否大于或等于other对象__le__(self,other)判断self对象是否小于或等于other对象__eq__(self,other)判断self对象是否等于other对象用于实现特定的功能,大部分方法包含self参数,表示当前对象方法classCandidate:……@classmethoddefgetNumber(cls): returncls.number

@staticmethoddefhelp(): print('这是一个候选人类')

number=0def__init__(self,id,name):self.id=id=nameself.votes=0Candidate.number+=1definfo(self):print(self.id,,self.votes)defvote(self):self.votes+=1类方法:(1)前面有@classmethod标记(2)只能对类属性进行访问(3)至少有一个形参,如:cls静态方法:(1)前面有@staticmethod标记(2)提供一种方式来创建不依赖于类实例的功能对象类是具有相同特征(属性)和行为(方法)的一组对象的集合,只是一个抽象的概念,可以理解为一个“模具”。在面向对象编程时,需要通过类这个“模具”创建出具体的对象。根据类创建对象的过程称为类的实例化,对象就是类的实例。对象的生存期,有三个阶段:“出生”“存活”“消亡”出生阶段即类的实例化阶段,通过以下形式创建对象:

对象名=类名(参数)如:c1=Candidate(1,'张三')

c2=Candidate(2,'李四') classCandidate:number=0def__init__(self,id,name):self.id=id=nameself.votes=0Candidate.number+=1def__del__(self): Candidate.number-=1 print('bye')对象c1=Candidate(1,'张三')表示当前对象c1__init__()方法在创建对象时会被自动调用,作用是对所创建对象进行初始化,并实现参数传递(构造方法)delc1__del__()方法在删除对象时会被自动调用,完成对象的销毁工作(析构方法)继承进行面向对象程序设计,首先要有类,然后创建对象,再通过访问对象的属性和方法来解决实际问题。类可以是全新设计的,也可以是对已有类进行改造得到的。这种在无需修改已有类的情况下,对现有功能进行扩展的机制就是继承。通过继承创建的新类被称为子类或派生类,被继承的类被称为父类或基类。继承允许在父类的基础上,增加新的方法和属性,或者重写父类的某些方法,以适应子类的要求,并且子类可以访问父类的属性和方法,从而实现了代码重用。定义子类classStudentCandidate(Candidate): def__init__(self,id,name,className):

Candidate.__init__(self,id,name)

self.className=className definfo(self): super().info() print(

温馨提示

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

最新文档

评论

0/150

提交评论