《Python编程基础与应用》课件0707封装_第1页
《Python编程基础与应用》课件0707封装_第2页
《Python编程基础与应用》课件0707封装_第3页
《Python编程基础与应用》课件0707封装_第4页
《Python编程基础与应用》课件0707封装_第5页
已阅读5页,还剩5页未读, 继续免费阅读

下载本文档

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

文档简介

封装+contents目录封装封装的作用01什么是封装及其作用?封装是面向对象三大特性(封装、继承、多态)之首,核心分为三层含义:1.数据与行为打包:将描述事物的属性(数据)和操作数据的方法(行为)统一放进一个类中,把复杂逻辑包装成整体,外部只需调用,不用关心内部实现。2.访问权限控制:隐藏类内部敏感数据/私有逻辑,只对外暴露安全的访问接口,避免外部随意篡改内部数据,保证数据安全。3.提高代码的可维护性和可扩展性:类的内部实现被隔离,后续修改内部逻辑或优化代码,只需保持公开接口,外部调用该类的代码无须修改。

封装封装的实现方法02封装的实现方法11.Python依靠下划线命名规则区分访问权限,实现数据隐藏:

命名格式类型访问规则name公共属性/方法无下划线,类内、类外、子类都能直接访问_name保护属性/方法单下划线,仅约定内部使用,语法上外部仍可访问__name私有属性/方法双下划线,Python自动改名,外部无法直接访问,仅类内可用

范例7-8:使用命名约定实现封装属性classStudent:def__init__(self,name,score):#单下划线开头:约定为受保护属性(protected)#仅编程约定,语法外部仍可访问,子类能访问

self._name=name#双下划线开头:私有属性,自动名称改写namemangling#外部无法直接obj.__score访问

self.__score=score其余代码省略输出结果:张三85原始分数:85修改后分数:95分数无效:必须在0-100之间需要注意的是:Python的封装是“约定式”的,而非强制式。封装的实现方法22.使用属性装饰器:@property装饰器把方法伪装成属性,读写时像访问普通属性一样简洁,同时保留数据校验、逻辑控制的封装能力,是Python推荐的优雅封装写法。三套配套装饰器1.@property:读取装饰器(getter),获取私有属性值2.@属性名.setter:修改装饰器(setter),赋值修改私有属性,可加校验3.@属性名.deleter:删除装饰器(deleter),执行del删除属性时触发。

范例7-9:使用属性装饰器实现封装

范例7-9classBankAccount:def__init__(self,balance):#私有属性:双下划线,外部无法直接访问

#所有余额操作统一通过property控制,实现封装

self.__balance=balance@propertydefbalance(self):"""获取器getter:读取私有余额,可添加日志、权限校验"""print("执行余额查询操作")returnself.__balance代码省略输出结果:执行余额查询操作当前余额:1000执行余额修改操作执行余额查询操作修改后余额:1500执行余额修改操作错误:余额不能为负,设置失败执行余额查询操作拦截后余额:1500封装的实现方法2通过属性装饰器实现的封装具有多重设计优势。在数据完整性方面,它确保了余额始终符合“不能为负”的基本业务规则,从源头杜绝了非法数据。在使用体验上,外部调用者可以像操作普通属性一样简洁地访问和修改余额,无须记忆烦琐的方法名,大大提升了代码的可读性和易用性。这种设计将所有的验证逻辑集中在setter方法这一处,使得维护和调试变得十分便捷。同时其扩展性极强,只需在现有setter方法中添加判断条件,即可轻松实现单笔交易限额、日累计限额等更复杂的业务规则。这个BankAccount类体现了封装的四个优势:1

温馨提示

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

评论

0/150

提交评论