Python描述符中有哪三种方法?
- 更新时间:2021-06-28 08:18:08
- 编辑:车凯凯
参考资料
- Python数据分析基础 PDF 电子书 / 11.3M / 克林顿·布朗利 推荐度:
- Python测试之道 PDF 电子书 / 15.9 MB / 杨燕琳 朱圣洲 石 推荐度:
- Python Web开发:测试驱动方法 PDF 电子书 / 44.6 MB / Harry J.W. Percival 推荐度:
- Python强化学习实战(含源码) PDF 电子书 / 98.5 MB / Sudharsan 推荐度:
- 《Python游戏编程入门》配套资源 配套资源 / 12.18 MB / (美)啥伯 著,李强 译 推荐度:
正文内容
我们整理一篇关于《Python描述符中有哪三种方法?》技术文章,觉得有用就收藏了,把程序员重写的代码发布到这里,希望对网友有用。
我们在对描述符有了初步认识后,那么对于其中方法的使用,也是学习描述符阶段的必备路线。本篇所要讲述的是三种方法__get__(),__set__(),和__delete__()。这里要区别于我们所学习的函数,有下划线的表示为一种特殊方法。下面我们就Python描述符中的三种方法带来详解。
1、方法说明
一般来说,描述符是带有“绑定行为”的对象属性,它的属性访问已经被描述符协议中的方法覆盖了。这些方法是__get__(),__set__(),和__delete__().
其中instance的参数表示实例化的对象,owner代表实例属于的类。
描述符必须定义在类属性中,而不能定义在构造函数中。
2、实例
object.__get__(self,instance,owner)
object.__set__(self,instance,value)
object.__delete__(self,instance)
上面的参数里,self 都是指描述符本身,owner 是包含描述符为某个属性的那个对象,instance 是 owner 的实例。这些参数由解释器自动传递,没有就传 None。函数体由用户自定义,此处可以妥善使用三个参数(self, instance, owner)。由于这里的描述符是 owner 的类属性,所以如果你使用 self.xxx 来存储属性值的话,这个属性也会被存成类属性,即你所有的实例都将访问同一个描述符:
class Descriptor(object): def __init__(self): self.d_name = '' def __get__(self, instance, owner): return self.d_name def __set__(self, instance, name): self.d_name = name.title() def __delete__(self, instance): del self.d_name class Person(object): name = Descriptor()
这里我们使用描述符的方式,是保存一个字符串,并把首字母大写,实际描述符可以做得更多。运行如下:
>>> a = Person() >>> a.name = 'adam' >>> a.name 'Adam' >>> b = Person() >>> b.name 'Adam'
这就是问题所在,如果想把描述符用作实例属性而不是类属性的话,使用 instance 参数代替 self 就好了。
以上就是Python描述符中的三种方法,在了解基本的使用后,可以对不同的方法做一个练习,以便更好的熟悉这些描述符中的方法。
相关教程
-
python异常与错误区别
python异常:检查到错误且解释器认为是异常,抛出异常;python错误:代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改。
发布时间:2019-07-10
-
Python正则表达式和re库的相关内容介绍(代码示例)
本篇文章给大家带来的内容是关于Python正则表达式和re库的相关内容介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
发布时间:2019-07-11