![14-0912描述符与装饰器描述和_第1页](http://file4.renrendoc.com/view/e880cf8e528cece7181a5b8ae2cc8c48/e880cf8e528cece7181a5b8ae2cc8c481.gif)
![14-0912描述符与装饰器描述和_第2页](http://file4.renrendoc.com/view/e880cf8e528cece7181a5b8ae2cc8c48/e880cf8e528cece7181a5b8ae2cc8c482.gif)
![14-0912描述符与装饰器描述和_第3页](http://file4.renrendoc.com/view/e880cf8e528cece7181a5b8ae2cc8c48/e880cf8e528cece7181a5b8ae2cc8c483.gif)
![14-0912描述符与装饰器描述和_第4页](http://file4.renrendoc.com/view/e880cf8e528cece7181a5b8ae2cc8c48/e880cf8e528cece7181a5b8ae2cc8c484.gif)
![14-0912描述符与装饰器描述和_第5页](http://file4.renrendoc.com/view/e880cf8e528cece7181a5b8ae2cc8c48/e880cf8e528cece7181a5b8ae2cc8c485.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Python基础课教室讲师:式微 时间:2018年9月教学监督热线 教学监督热线 01020304必须掌握:super的用法必须掌握: _str_ _repr_ _call_ 方法了解:多继承方法解析顺序和Mixin开发模式了解:魔术方法原理和作用知识点回顾本节知识点01. _new_方法02. 定制属性访问03. 描述符教学监督热线 04. 装饰器PART ONE_new_方法教学监督热线 思考01类每次实例化的时候都会创建一个新的对象,如果要求类只能被实例化一次该怎么做呢?_new_方法class Earth: def _new_(cls): if not hasattr(cls, ins
2、tance): cls.instance = super()._new_(cls) return cls.instance def _init_(self): = earthe = Earth()print(e, id(e)a = Earth()print(a, id(a)在上面的例子中,我们可以看到两个实例的ID是相同的意味着这两个其实引用的是同一个实例,是一个实例的不同名字_new_方法初始化函数之前单例模式合理利用_new_ 方法合理利用可以带来方便,常应用在类的单例模式利用这个 _new_ 可以很方便的实现类的单例模式_new_方法会在初始化函数 _init_ 之前
3、执行_new_方法总结必须掌握:_new_ 方法的运行顺序了解:使用 _new_ 方法的单例模式应用PART TWO定制属性访问教学监督热线 思 考010203如何判断一个实例里面有某个属性呢?怎样删除实例属性呢?同样的怎样删除变量呢?定制属性访问03 04 02 re = Rectangle(3, 4) # 矩形类实例改:setattr(b, length, 6)b._setattr_(length, 5)增:b.aaa = 1setattr(b, bbb, 2)b._setattr_(ccc, 3)删:delattr(b, ccc)b._delattr_(bbb)del b01查:hasa
4、ttr(re, length)# 返回bool值getattr(re, length)# 返回属性值b. _getattribute_(length) # 返回属性值getattr(object,name,default) hasattr(object,name)setattr(object,name,value) = valuedelattr(object,name) del getattr / hasattr / setattr / delattrdef hasattr(object, name_string): try:
5、 getattr(object, name_string) return True except AttributeError: return False定制属性访问re = Rectangle(3, 4) # 矩形类实例当属性不存在时,如果定义了此方法,则调用方法01def _getattr_(self, item): print(no attribute)定制属性访问b.lengthb._getattribute_(length)属性值存在属性值不存在返回属性值调用_getattr_未定义时报错定制属性访问hasattrgetattrsetattr设置属性得到属性值判断是否存在属性,如果属
6、性存在则进行下一步操作定制属性访问总结必须掌握:hasattr getattr setattr了解: _getattribute_熟悉: 属性调用规则PART THREE描述符教学监督热线 思 考01如果在一个类中实例化另一个类,对这个属性进行访问的时候怎么做的?描述符class MyAtrribute: def _get_(self, instance, owner): print(get) def _set_(self, instance, value): print(set) def _delete_(self, instance): print(del)class MyClass: m
7、 = MyAtrribute() def _del_(self): print(instance delete)c = MyClass()c.mc.m = 1del c.m这类里面实例化另一个类,对这个实例做访问时,需要定义 _get_ _set_ _delete_ 方法魔术方法描述符大家了解即可魔术方法的作用其实是让开发人员能够更加灵活的控制类的表现形式描述符总结了解描述符即可PART FOUR装饰器教学监督热线 思 考01之前我们讲了闭包,闭包中可以传入一个函数吗?装饰器上面这里实现了给函数的结果加1的功能内置装饰器类装饰器类也可以做装饰器,但是需要定义 _call_ 方法装饰器参考装饰器修饰函数增加功能内置装饰器三个内置装饰器是需要掌握的,在项目中会经常使用给函数增加功能修饰函数装饰器总结必须掌握:装饰器概念和用法必须掌握:三个内置装饰器的用法本节知识点回顾必须掌握:_new_方法的运行顺序必须掌握:装饰器的概念的用法必须掌握:三个内置装饰器了解:类中属性的访问过程作 业把上课的例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西离婚协议书样本
- 股权质押借款合同正规
- 诉讼保全委托担保协议书
- 装载机租赁协议书范本
- 全新技术服务合同
- 内外墙粉刷合同范本
- 建筑工程安明协议
- 中式装修售后服务协议模板
- 教师兼职聘用合同
- 房屋内墙粉刷合同
- DB12T990-2020建筑类建设工程规划许可证设计方案规范
- 2023-2024学年九年级三调语文试卷(含答案)
- 医学教程 常见急腹症的超声诊断课件
- DB11T 1481-2024生产经营单位生产安全事故应急预案评审规范
- 《氓》教学设计 2023-2024学年统编版高中语文选择性必修下册
- 《网店运营与管理》第3版 课件全套 白东蕊 第1-11章 网上开店概述- 移动网店运营
- 2024年全国国家电网招聘之电网计算机考试历年考试题(附答案)
- 化学元素周期表注音版
- 药物过敏性休克
- T-GDASE 0042-2024 固定式液压升降装置安全技术规范
- 2024福建省厦门市总工会拟录用人员笔试历年典型考题及考点剖析附答案带详解
评论
0/150
提交评论