首页 > 编程语言 > 详细

python学习之包装与授权

时间:2020-04-08 14:47:03      阅读:93      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

包装是一个通用的名字,意思是对一个已存在的对象进行包装,不管它是数据类型还是一段代码,可以
是对一个已存在的对象增加新的、删除不要的或修改其他已存在的功能

你可以包装任何类型作为一个类的核心成员,以使新对象的行为模仿你想要的数据类型中已存在的行为
并且去掉你不希望存在的行为,可能会要做一些额外的事情。这就是“包装类型”

包装包括定义一个类,它的实例拥有标准类型的核心行为。

授权是包装的一个特性,可用于简化处理相关命令性功能,采用已存在的功能以达到最大限度的代码重用。

包装一个类型通常是对已存在的类型的一些定制。这种做法可以新建、修改或删除原有产品功能。其他的
则保持原样,或者保留已存功能和行为。授权的过程。即是所有更新的功能都是由心累的某部分来处理,
单已存在的功能就授权给对象的默认属性。

实现授权的关键点就是覆盖__getattr__()方法,在代码中包含一个对getattr()内建函数的调用。
特别调用getattr()以得到默认对象属性(数据属性或者方法)并返回它以便访问或调用。

特殊方法__getattr__()的工作方式是,当搜索一个属性时,任何局部对象首先被找到(定制的对象)。如果搜索
失败了,则__getattr__()会被调用,然后调用getattr()得到一个对象默认行为。

当引用一个属性时,解释器将试着在局部名称空间中查找那个名字,比如一个自定义的方法或局部实例属性。
如果没有在局部字典中找到,则搜索类名名称空间,以防一个类属性被访问。最后,如果两类搜索都失败了,
搜索则对原对象开始授权请求,此时,__getattr__()会被调用。

python学习之包装与授权

原文:https://www.cnblogs.com/jinpingzhao/p/12659619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!