




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PYTHON程序设计 www python org Python程序设计 第8章Python面向对象编程 Python程序设计 8 1多态 封装与继承8 2类与对象8 3构造函数8 4函数property Python程序设计 多态 封装与继承 polymorphism 多态指的是能够同样地对待不同类型和类的对象即无需知道对象属于哪个类就可调用其方法操作的行为将随对象所属的类而变化 Python程序设计 多态 封装与继承 abc count a 1 1 2 a count a 1 1 23 sdut edu sdutedu Python程序设计 多态 封装与继承 目的 向外部隐藏不必要的细节 encapsulation 可以让对象拥有自己的状态 对象的状态由对象的属性来表征 对象的方法可以修改这些属性 Python程序设计 多态 封装与继承 继承 一个派生类 derivedclass 继承基类 baseclass 的字段和方法 继承允许把一个派生类的对象作为一个基类对象对待 例如 一个Dog类型的对象派生自Animal类 Inheritance Python程序设计 8 1多态 封装与继承8 2类与对象8 3构造函数8 4函数property Python程序设计 类与对象 类 Class 用来描述具有相同的属性和方法的对象的集合 它定义了该集合中每个对象所共有的属性和方法 对象 通过类定义的数据结构的实例 对象包括两个数据成员 类变量和实例变量 和方法 Python程序设计 类与对象 自定义类 Python程序设计 类与对象 因封装而隐藏 Python没有为私有属性提供直接的支持 而是需要程序员知道在什么情况下从外部修改属性是安全的 Python提供让方法或者属性成为私有的方式 在其名称前加两个下划线 以此类似于其他语言的标准私有化方法 Python程序设计 类与对象 隐藏 Python程序设计 类与对象 隐藏 Python程序设计 类与对象 隐藏 无法禁止别人访问对象的私有方法和属性 Python程序设计 类与对象 继承与多态 对于Dog Cat来说 Animal就是它的父类 对于Animal来说 Dog和Cat就是它的子类 Python程序设计 类与对象 继承与多态 当子类和父类都存在相同的方法时 子类覆盖了父类 在代码运行的时候 总是会调用子类的方法 体现了多态特性 Python程序设计 类与对象 isinstance isinstance判断变量是否属于某一种类型 Python程序设计 类与对象 issubclass判断一个类是否是另一个类的子类 base 查看类的基类 Python程序设计 类与对象 多重继承 多重继承是个功能强大的工具 但除非万不得已 尽量避免使用 Python程序设计 类与对象 多重继承 如果多个父类以不同的方式实现同一个方法 即多个同名的方法 必须在calss语句中小心排列这些父类 因为前面类的方法将覆盖后面类的方法 如classTalkCal Talker Calculator pass如两个父类都有talk方法 那么Talker将导致Calculator中的talk方法无法访问 Python程序设计 类与对象 抽象基类 ABC AbstractBaseClass 抽象基类 主要定义了基本类和最基本的抽象方法 可以为子类定义共有的API 不需要具体实现 相当于是Java中的接口或者是抽象类 抽象基类可以不实现具体的方法 当然也可以实现 只不过子类如果想调用抽象基类中定义的方法需要使用super 而是将其留给派生类实现 Python程序设计 类与对象 抽象基类 Python程序设计 类与对象 抽象基类 Python程序设计 类与对象 抽象基类 直接继承直接继承抽象基类的子类就没有这么灵活 抽象基类中可以声明 抽象方法 和 抽象属性 只有完全覆写 实现 了抽象基类中的 抽象 内容后 才能被实例化 而虚拟子类则不受此影响 Python程序设计 类与对象 抽象基类 Python程序设计 类与对象 抽象基类 虚拟子类将其他的类 注册 到抽象基类下当虚拟子类 调用register方法 虚拟子类的好处是你实现的第三方子类不需要直接继承自基类 可以实现抽象基类中的部分API接口 也可以根本不实现 Python程序设计 类与对象 抽象基类 Python程序设计 8 1多态 封装与继承8 2类与对象8 3构造函数8 4函数property Python程序设计 构造函数 构造函数 用于初始化类的内部状态 使用方式为 init self 参数 类被实例化的时候就会执行该函数 可以把要先初始化的属性放到这个函数里面 Python程序设计 构造函数 构造函数 Python程序设计 构造函数 析构函数 Python提供 del 方法构成析构函数当使用del删除对象时 会调用他本身的析构函数当对象在某个作用域中调用完毕 在跳出其作用域的同时析构函数也会被调用一次 这样可以用来释放内存空间 鉴于无法知道准确的调用时间 建议尽可能不要使用 del Python程序设计 构造函数 析构函数 Python程序设计 构造函数 重写构造函数 重写是继承机制的一个重要方面 对构造函数尤其重要 构造函数用于初始化新建对象的状态 对于大多数子类来说 除了父类的初始化代码外 还需要有自己的初始化 与重写普通方法相比 重写构造函数时 必须调用父类的构造函数 否则可能无法正确的初始化对象 Python程序设计 构造函数 重写构造函数 Python程序设计 构造函数 重写构造函数 Python程序设计 构造函数 重写构造函数 调用未关联的超类构造函数 使用super函数 Python程序设计 构造函数 重写构造函数 调用未关联的超类构造函数 Python程序设计 构造函数 重写构造函数 使用super函数 使用super函数更直观 即便有多个父类 只需调用super函数一次 Python程序设计 8 1多态 封装与继承8 2类与对象8 3构造函数8 4函数property Python程序设计 property 对新式类 将类的方法变成属性来访问可以使用property函数property fget fset fdel doc 也可以将property函数当作装饰器使用 property Python程序设计 property property函数 Python程序设计 property Python程序设计 propert
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年名师中国注册市场营销师职业资格认证模拟题
- 2025年偏摆检查仪项目建议书
- 2025年静脉输液耗材项目发展计划
- 2025年超细铜粉项目建议书
- 江西省南昌市南昌县2024-2025学年四年级上学期期末数学试题
- 河北省廊坊市文安县第一中学(5-18 班)2025-2026学年高二上学期开学生物试题(无答案)
- 抗疫课件模板
- 行政知识考试题及答案
- 关于消防的题目及答案
- 批注法阅读实例课件
- 中级注册安全工程师《法律法规》试题及答案
- 2025年秋统编版语文二年级上册全册课件(课标版)
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- 2025年学校意识形态工作要点
- 八年级下册道德与法治-知识清单
- 煤矿安全规程(防治水)课件
- 污水站沉淀池清淤及清洗工作施工方案
- 三角机位与轴线规律课件
- 新北师大版高中英语选择性必修一词汇表(word精校版)
- 人教版七年级上册英语教学课件:Starter Unit 1 1a-2e(共32张PPT)
评论
0/150
提交评论