Python描述器
2015-06-22 15:42
741 查看
在python中一个描述器就是定义下面的方法中一个或多个的一个对象:
如果一个对象同时定义了
要想写一个只读的资料描述器,只需同时定义
描述器的调用
描述器可以直接这么调用:
描述器的调用规则如下:
参考资料:
Python Gossip: 描述器
Python描述器引导
Descriptor HowTo Guide
Python descriptor
Python FAQ: Descriptors
__get__(self, instance, owner)t __set__(self, instance, value) __delete__(self, instance)
如果一个对象同时定义了
__get__()和
__set__(),它叫做资料描述器。只定义了
__get__()的描述器叫做非资料描述器(一般用于方法)。 资料描述器和非资料描述器的区别在于:相对于实例字典的优先级。如果实例字典中有与资料描述器同名的属性,优先使用资料描述器中的;如果实例字典中有与非资料描述器中同名的属性,优先使用实例字典中的。即优先级 资料描述器 > 实例字典 > 非资料描述器。
要想写一个只读的资料描述器,只需同时定义
__get__()和
__set__()并在
__set__()中抛出一个
AttributeError。
描述器的调用
描述器可以直接这么调用:
descriptor.__get__(obj),不过一般都是用来拦截对实例属性的访问。
描述器的调用规则如下:
__get__(self, instance, owner)
obj.descriptor will call descriptor.__get__(obj. OwnerClass) OwnerClass.descriptor will call descriptor.__get__(None, OwnerClass)
__set__(self, instance, value)
obj.descriptor = 5 will call descriptor.__set__(obj, 5)
__delete__(self, instance)
del obj.descriptor will call descriptor.__delete__(obj)
参考资料:
Python Gossip: 描述器
Python描述器引导
Descriptor HowTo Guide
Python descriptor
Python FAQ: Descriptors
相关文章推荐
- python爬虫
- Python生成器
- ZH奶酪:【Python】random模块
- python学习-subprocess模块
- python中的类,对象,方法,属性等介绍
- Python变量、运算符与表达式
- alex教学视频--购物表
- python常用模块
- python中if __name__ == '__main__':
- Python 中的方法、静态方法(static method)和类方法(class method)
- Python学习 之 switch语句
- Python编码规范
- Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat
- Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat
- Python lambda匿名函数
- Python学习 之 匿名函数
- 说说Python的装饰器模式与面向切面编程
- python字符串前缀 u和r的区别
- 零基础项目制学习python(二)
- python传值机制