Python实战教程(共17单元)12面向对象编程基础知识

上传人:sat****105 文档编号:299277133 上传时间:2022-05-27 格式:PPTX 页数:25 大小:188.64KB
返回 下载 相关 举报
Python实战教程(共17单元)12面向对象编程基础知识_第1页
第1页 / 共25页
Python实战教程(共17单元)12面向对象编程基础知识_第2页
第2页 / 共25页
Python实战教程(共17单元)12面向对象编程基础知识_第3页
第3页 / 共25页
Python实战教程(共17单元)12面向对象编程基础知识_第4页
第4页 / 共25页
Python实战教程(共17单元)12面向对象编程基础知识_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《Python实战教程(共17单元)12面向对象编程基础知识》由会员分享,可在线阅读,更多相关《Python实战教程(共17单元)12面向对象编程基础知识(25页珍藏版)》请在金锄头文库上搜索。

1、第十一章第十一章面向对象编程基础知识2第十一章第十一章内容简介内容简介311.1 定定义类义类的的语语法格式法格式数据类型:内置数据类型标准数据类型自定义数据类型。内置模块中定义的数据类型称为内置数据类型。int、float、str、list、tuple、set、dict等是内置数据类型。内置数据类型无须定义、无须使用import语句即可直接使用。411.1 定定义类义类的的语语法格式法格式标准模块中定义的数据类型称为标准数据类型。标准数据类型无须定义、但须使用import语句导入标准模块后才可使用。datetime标准模块的date、time、datetime和timedelta等是标准数据

2、类型。也可以自己编写数据类型的定义,这就是自定义数据类型(也叫自定义类)。511.1 定定义类义类的的语语法格式法格式关键字class用于定义一个类,紧跟class关键字的是类的名字。语法格式如下。docstring:类的文档字符串(是可选的)。本质是紧跟类头的多行注释,用于描述类的属性、方法等信息,通过模板对象(稍后介绍)的_ _doc_ _属性可以获取文档字符串的内容。文档字符串是“体”的一部分,因此文档字符串也需要缩进。611.2 类类的定的定义义、模板、模板对对象和象和实实例化例化对对象象间间的关系的关系类的定义主要用于创建模板对象,运行类的定义即可重建模板对象。模板对象主要用于创建实

3、例化对象,在模板对象名后加括号“()”表示创建模板对象的实例化对象。711.2.1 类类的定的定义义、模板、模板对对象和象和实实例例化化对对象象间间的关系的关系Python过于“灵活”。模板对象被创建后,Python允许通过“.”操作符向模板对象动态地添加(修改、删除)属性(或方法),导致类的定义无法决定模板对象的内部结构。实例化对象被创建后,Python允许通过“.”操作符向实例化对象动态地添加(修改、删除)属性(或方法),导致模板对象无法决定实例化对象的内部结构。Python过于“灵活”,使代码“顽皮的像猴子一样不可控制”,程序运行期间动态修改自身的行为称作动态编程或者monkey pat

4、ching(猴子补丁)。811.2.1 类类的定的定义义、模板、模板对对象和象和实实例例化化对对象象间间的关系的关系本书不建议在程序运行阶段动态地修改模板对象的内部结构和实例化对象的内部结构,模板对象的内部结构应该由类的定义决定,实例化对象的内部结构应该由模板对象决定。推理可知,实例化对象的内部结构应该由类的定义确定。911.2.2 函数和方法的关系函数和方法的关系Python严格区分函数function和方法method。函数和方法之间的关系罗列如下。1.函数一经定义,便可直接调用。2.方法本质是函数,但不能直接调用。方法能够“隐式地”访问属性,调用方法前必须对属性进行初始化(即先创建实例化

5、对象),再通过实例化对象调用方法。1011.2.2 函数和方法的关系函数和方法的关系Python严格区分函数function和方法method。函数和方法之间的关系罗列如下。3.调用函数时,通信的内容是参数,函数和参数应该单独存放,因此调用函数时实参个数必须与形参个数保持一致。4.调用方法时,通信的内容是对象自己(可能还有普通参数)。使用“对象.方法名()”调用方法时,Python会将“对象自己”作为实参“隐式地”传递给方法的第1个形参。因此,调用方法时实参个数比形参个数少1,即方法的实参个数=方法的形参个数-1。这里的“对象自己”如果是实例化对象,通常命名为“self”,如果是模板对象通常命

6、名为“cls”。1111.2.3 查查看模板看模板对对象和象和实实例化例化对对象象的内部的内部结结构构Python中一切皆对象,对象由一组属性和一组方法构成。查看对象的内部结构有两种方法。通过dir(obj)函数。如果obj是模板对象,dir(obj)返回的属性和方法中,包含“父”模板对象的属性和方法;如果obj是实例化对象,dir(obj)返回的属性和方法中,包含模板对象的属性和方法。通过对象的_ _dict_ _属性。对象的_ _dict_ _属性以“键值对”的方式记录了独属于对象自己的属性和方法。通常情况下,obj._ _dict_ _的返回结果是dir(obj)函数返回结果的子集。12

7、11.2.4 访问访问模板模板对对象和象和实实例化例化对对象象的内部的内部结结构构“.”点符号类似于中文的“的”字,英文的“s”,表示所有关系。对象紧跟“.”点符号表示访问对象“的”某个属性(或方法)。通过“.”操作符还可以向模板对象和实例化对象添加、修改或删除属性(或方法)。对于实例化对象而言,还可以通过_ _dict_ _属性向实例化对象添加、修改或删除属性(或方法)。1311.3 构造方法的构成构造方法的构成Python的构造方法由_ _new_ _方法和_ _init_ _方法共同构成。_ _new_ _方法负责创建一个空白实例化对象。_ _init_ _(self)方法的第1个参数s

8、elf用于接收_ _new_ _方法创建的空白实例化对象,然后向空白实例化对象self添加属性、并对属性初始化。初始化后的实例化对象由_ _new_ _方法负责返回。1411.3.1 _ _new_ _方法的方法的语语法格法格式式new是译作新建、创建。_ _new_ _方法负责创建空白实例化对象,并返回_ _init_ _方法初始化后的实例化对象。_ _new_ _方法的第1个形参cls用于接收模板对象。类的定义如果没有提供_ _new_ _方法,则会继承父类object的_ _new_ _方法。大多数时候,无须“重写”_ _new_ _方法。_ _new_ _方法的语法格式方法的语法格式1

9、2def _ _new_ _(cls,*args,*kwargs): pass1511.3.2 _ _init_ _方法的方法的语语法格式法格式init是单词initialize的缩写,译作初始化。类的定义通常都会提供_ _init_ _(self)方法,功能是向空白实例化对象self添加属性、并对属性初始化。_ _init_ _方法的语法格式如下所示。_ _init_ _方法的第1个形参self用于接收_ _new_ _方法创建的空白实例化对象。_ _new_ _方法的语法格式方法的语法格式12def _ _init_ _(self): pass1611.4 对对象的属性和方法象的属性和方法

10、属性分为实例属性和类属性,方法分为实例方法、类方法和静态方法。1711.4.1 实实例属性和例属性和实实例方法例方法实例属性(instance attribute)属于实例化对象,_ _init_ _方法负责向实例化对象添加实例属性。实例方法(instance method)属于模块对象,def语句负责定义实例方法。为了让实例方法能够“隐式地”访问实例属性,实例方法的第1个参数必须是“实例化对象自己”,一般将“实例化对象自己”命名为self。1811.4.2 类类方法和静方法和静态态方法方法通过模板对象Triangle,不仅可以构造出Triangle(1,2,3)三角形实例化对象,还可以构造出

11、Triangle(-1,2,3)三角形实例化对象,然而现实世界中边长(1,2,3)和边长(-1,2,3)的三角形是不存在的。解决该问题的办法是:创建空白实例化对象前,进行必要的数据“有效性”检查。可以交由类方法和静态方法完成。这是因为:类方法和静态方法可以被调用的时机是创建模板对象之后、创建空白实例化对象之前。1911.4.2 类类方法和静方法和静态态方法方法类方法。在def关键字的上面(注意垂直对齐)添加“classmethod”装饰器后,该方法就变为类方法。定义类方法时,第1个形参用于“隐式地”接收“模板对象自己”,通常将第1个参数命名为cls。2011.4.2 类类方法和静方法和静态态方

12、法方法静态方法。在def关键字的上面(注意垂直对齐)添加“staticmethod”装饰器后,该方法就变为静态方法。除了“staticmethod”装饰器,静态方法的语法格式和函数的语法格式完全相同。实例方法、类方法和静态方法都属于模板对象,但是它们的可调用时机不同。创建模板对象后,类方法和静态方法就可以被调用。调用类方法和静态方法时,既可以通过模板对象调用(建议),又可以通过实例化对象调用(不建议)。只有创建实例化对象后,实例方法才可以被调用。2111.4.3 类类属性属性属于模板对象的属性称为类属性。与实例属性不同的是,类属性可以被模板对象的所有实例化对象共享。实例化对象可以访问类属性,却

13、不能修改类属性。访问类属性时,建议通过模板对象访问,不建议通过实例化对象访问(虽然可以但不建议)。定义类属性的语法格式如下。_ _new_ _方法的语法格式方法的语法格式12class ClassName: class_attribute#定义类属性2211.5 方法的方法的链链式式调调用用方法的链式调用是一种编程技巧,该技巧仅仅引用对象一次,但可以实现方法的多次调用。在单元测试、数据可视化、数据分析等技术领域经常使用该技巧。方法的链式调用的实现原理是上一次方法返回的对象,是下一次调用方法的执行对象。2311.6 小小结结1.实例化对象的内部结构建议由类的定义决定。2.类的定义、模板对象和实例

14、化对象之间的关系。3.类属性、实例属性4.属性的命名空间5.访问属性的方法6.实例方法、类方法、静态方法的定义7.实例方法、类方法、静态方法的形参8.实例方法、类方法、静态方法的可调用时机.未完待续未完待续Note: 具体内容具体内容参看本书参看本书.2411.6 小小结结9.实例方法、类方法、静态方法的表现形式11.调用method方法和调用function函数的区别11.属性、形参、实参12.实例属性和类属性13.创建实例化对象的3个步骤14.理解self的生命周期15._ _new_ _方法和_ _init_ _方法的注意事项16.关于重载(overload)17.关于声明方法的建议Note: 具体内容具体内容参看本书参看本书.25上机实践上机实践上机上机实实践践1:类类的定的定义义、模板、模板对对象和象和实实例化例化对对象象间间的关系的关系上机上机实实践践2:构造方法、:构造方法、实实例属性和例属性和实实例方法例方法上机上机实实践践3:类类方法和静方法和静态态方法方法上机上机实实践践4:类类属性的属性的应应用用上机上机实实践践5:方法的:方法的链链式式调调用用Note: 具体步骤具体步骤参看本书参看本书.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号