版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章面向对象编程CONTENTS目录6.1面向对象编程概述016.2类与对象026.3成员属性036.4成员方法046.5类的继承056.1面向对象编程概述6.1.1面向对象的基本概念1.对象实现了数据和操作的结合,数据和操作封装于对象这个统一体中。2.类类是对象的模板,实际上就是一种数据类型,一个类所包含的数据和方法用于描述一组对象的共同属性和行为。3.消息发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名。4.封装是指将对象的数据(属性)和操作数据的过程(方法)结合起来所构成的单元,只能通过类对外部提供的接口对该对象进行各种操作。5.继承是指在一个类的基础上定义一个新的类,原有的类称为基类,超类或父类,新生成的类称为派生类或子类。6.多态是指一个名称相同的方法产生了不同的动作行为,即不同对象收到相同的消息时产生了不同的行为方式。6.1.2面向过程与面向对象的比较(1)面向过程编程方法是通过函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个对象整体来处理。(2)面向过程编程方法以功能为中心来设计功能模块,程序难以维护;面向对象程序设计方法以数据为中心来描述系统,数据相对于功能而言具有较强的稳定性,因此程序更容易维护。(3)面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,因此更符合实际需要。6.2类与对象6.2.1类的定义类可以通过class语句来定义,语法格式如下:class类名:类体定义一个类时,以关键字class开始,后跟类名和冒号。类名遵循标识符命名规则,其首字母通常采用大写形式。类体用于定义类的所有细节,向右缩进对齐。在类体中定义类的所有变量成员和函数成员。变量成员即类的属性,用于描述对象的状态和特征;函数成员即类的方法,用于实现对象的行为和操作。通过定义类实现了数据和操作的封装。类体中也可以只包含一个pass语句,此时将定义一个空类。访问类的属性类名.属性名6.2.2创建对象创建类的实例对象:对象名=类名(参数列表)访问对象的属性:对象名.属性名调用对象的方法:对象名.方法名(参数)6.3成员属性6.3.1类属性类属性按能否在类外部访问可以分为公有属性和私有属性,它们都可以通过在类体中所有方法之外通过定义成员变量来创建,创建类之后也可以在类定义的外部通过类名和圆点运算符来添加公有属性。定义属性时,如果属性名以双下画线“__”开头,则该属性就是私有属性,否则就是公有属性。在类体中所有方法之外,无论是公有属性还是私有属性都可以直接通过变量名来访问,在类的成员方法内部则要通过“类名.属性名”形式来访问。在类的外部,公有属性仍然可以通过“类名.属性名”形式来访问,私有属性则不能通过这种形式来访问。如果试图通过“类名.属性名”形式来访问私有属性,则会抛出AttributeError错误。6.3.2实例属性实例属性是某个类的实例对象所拥有的属性,属于该类的某个特定实例对象。实例属性可以在类的内部或类的外部通过赋值语句来创建。(1)在类的内部,定义类的构造方法__init__或其他实例方法时,通过在赋值语句中使用self关键字、圆点运算符和属性名来创建实例属性,语法格式如下:self.属性名=值(2)在类的外部,创建类的实例后,可通过在赋值语句中使用实例对象名、圆点运算符和属性名来创建新的实例属性,语法格式如下:对象名.属性名=值6.3.3类属性与实例属性的比较类属性与实例属性的区别(1)所属的对象不同(2)定义的方法不同(3)引用的方法不同类属性与实例属性的共同点和联系(1)类对象和实例对象都是对象(2)类对象和实例对象包含的属性及其取值都可以通过__dict__属性来获取(3)如果要读取的某个实例属性还不存在,但在类中定义了一个与其同名的类属性,则Python就会以这个类属性的值作为实例属性的值,同时还会创建一个新的实例属性6.4成员方法6.4.1内置方法1.构造方法构造方法__init__(self,
...)是在创建新对象时自动调用的,可以用来对类的实例对象进行一些初始化操作,例如设置实例属性等。如果在类中未定义构造方法,则系统将执行默认的构造方法。构造方法支持重载,定义类时可以根据需要重新编写构造方法。2.析构方法析构方法__del__(self)在对象被删除之前自动调用,不需要在程序中显式调用。当程序运行结束时,在程序中创建的对象会被删除,此时将自动调用析构方法;当离开某个作用域(如函数)时,在该作用域中创建的对象会被删除,此时析构方法也会被调用一次,这样可以用来释放内存空间。析构方法支持重载,通常可以通过该方法执行一些释放资源的操作。6.4.2类方法类方法是类对象本身拥有的成员方法,通常可以用于对类属性进行修改。要将一个成员函数定义成类方法,必须将该函数作为装饰器classmethod的目标函数,而且以类对象本身作为其第一个参数,语法格式如下:@classmethoddef函数名(cls,…):函数体定义类方法之后,可以通过类对象或实例对象来访问它,语法格式如下:类名.方法名([参数])对象名.方法名([参数])6.4.3实例方法类中的实例方法是类的实例对象所拥有的成员方法。定义实例方法时,至少需要定义一个参数,而且必须以类的实例对象作为第一个参数,按照惯例第一个参数的名称应为self,但也可以使用其他名称。定义实例方法的语法格式如下:def函数名(self,...):函数体定义实例方法后,只能通过对象名、圆点运算符和方法名来调用它,而且不需要将对象实例作为参数传入方法中,语法格式如下:对象名.方法名([参数])6.4.4静态方法定义静态方法,还必须将其作为修饰器staticmethod的目标函数,语法格式如下:@staticmethoddef函数名([参数列表])函数体当定义一个类时,可以在类的静态方法中通过类名来访问类属性,但是不能在静态方法中访问实例属性。在类的外部,可以通过类对象或实例对象来调用静态方法,语法格式如下:类名.静态方法名([参数])对象名.静态方法名([参数])6.4.5私有方法在类中创建某种类型的私有方法的过程与创建相同类型的公有方法类似,当定义实例方法时需要使用第一个形参来接受当前实例对象;当定义类方法时需要将成员函数作为装饰器classmethod的目标函数,并且通过第一个形参来接受类对象本身;定义类静态方法时需要将成员函数作为装饰器staticmethod的目标函数,可以有形参也可以没有形参。所不同的是,在定义私有方法时,成员函数名必须以两个下画线“__”开头。私有方法只能在类的内部使用,其调用方法也公有方法类似,即私有实例方法通过当前对象实例来调用,私有类方法和私有静态方法则通过类对象来调用。不允许也不提倡在类的外部使用私有方法,如果一定要在类的外部调用私有方法,则需要使用一个新的方法名,该方法名以一个下画线开头,后跟类名和私有方法名。6.5类的继承6.5.1单一继承在Python语言中,可以在单个父类的基础上来定义新的子类,这种继承关系称为单一继承。单一继承可以使用class语句来实现,语法格式如下:class子类名(父类名):类体其中子类名表示要新建的子类;该子类要从中继承的父类必须放在圆括号内。如果子类名后面的圆括号中只有一个父类,则这种继承关系称为单一继承。基于父类创建新的子类之后,该子类将拥有父类中的所有公有属性和所有成员方法,这些成员方法包括构造方法、析构方法、类方法、实例方法和静态方法,除了继承父类的所有公有成员外,还可以在子类中扩展父类的功能,这可以通过两种方式来实现,一方面是在子类中增加新的成员属性和成员方法,另一方面是对父类已有的成员方法进行重定义,从而覆盖父类的同名方法。6.5.2多重继承
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 熔炼浇注工安全实践水平考核试卷含答案
- 铁氧体元件研磨工诚信竞赛考核试卷含答案
- 通信接入设备装调工岗位总结考核试卷含答案
- 2025年阜阳市颍上县四年级数学下学期期中检测模拟试题含答案解析
- 2026事业单位笔试-福建-福建医学技术(医疗招聘)历年参考题库含答案详解
- 2026中级银行从业资格(官方)-风险管理2参考试题库历年考点答案详解
- 2026年山西省人教版高二地理第3章旅游地理练习题
- 2025年辽宁省辽阳市宏伟区三年级数学第二学期期中学业水平测试试题含答案
- 2025年辽宁省丹东市振安区数学四年级下学期期末监测试题(含答案)
- 动物免疫测试题及详细答案
- 财务报表审计工作底稿编制案例
- DL∕T 1828-2018 火电厂烟气脱硝再生催化剂
- DL∕T 1362-2014 输变电工程项目质量管理规程
- DZ∕T 0301-2017 海洋地质图图例图式及用色标准(正式版)
- 《血管活性药物静脉输注护理》标准解读
- 统编小学语文六年级上册第三单元解读
- 集合的基本运算(课件)
- 2023年上海市秋季班高二语文讲义(秋上教师版)
- 浙教版七年级数学下册全册课件
- 高中英语 译林版 必修三 Unit 3 The world online Unit3第2课时Reading
- 把政治监督摆在突出位置不断推进政治监督“三化”PPT大力推进政治监督三化PPT课件(带内容)
评论
0/150
提交评论