1.  
  2. 主页
  3.  / 
  4. Python基础到高级
  5.  / 
  6. 描述器

描述器

描述器的定义

描述器的其实就是一个类,实现了__get__,__set__和__delete__中的任何一个方法的类,这样的类就是描述器

描述器是一种代理机制,当一个类变量被定义为描述器的时候,对这个类变量的操作,将有此描述器代理

  • 访问这个类变量会调用__get__方法
  • 对这个类变量赋值会调用__set__方法
  • 删除这个类变量的时候会调用__delete__方法

定义一个描述器

描述器会提升优先级到高于dict之前,但是前提是描述器中存在set或者delete方法,如果描述器中不存在set或者delete方法的话,则低于dict的优先级

__get__、__set__和__delete__的原始表达形态

  • __get__(self, instance, cls) # instance:类实例, cls:类本身, 使用类访问的时候,instance为None
  • __set__(self, instance, value) # instance:类实例, value:为值,只有实例才会调用__set__方法
  • __delete__(self, instance) # instance:类实例

__get__

__set__

__delete__

描述器的应用场景

描述器是用于接管实例变量的操作

使用描述器来实现classmethod装饰器

使用描述器来实现staticmethod装饰器

这篇文章对您有用吗?

我们要如何帮助您?

发表评论

邮箱地址不会被公开。 必填项已用*标注