Python中描述符是如何定义和使用的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计929个文字,预计阅读时间需要4分钟。
在Python中,通过使用描述符,可以自定义对象属性的访问行为。本质上,描述符是一个类,它定义了属性的读取和写入操作。简而言之,一个类可以被定义为描述符,只要它实现了特定的方法,例如`__get__`和`__set__`,以便在属性访问时进行自定义处理。
Python 中,通过使用描述符,可以让程序员在引用一个对象属性时自定义要完成的工作。本质上看,描述符就是一个类,只不过它定义了另一个类中属性的访问方式。换句话说,一个类可以将属性管理全权委托给描述符类。
描述符类基于以下 3 个特殊方法,换句话说,这 3 个方法组成了描述符协议:描述符是 Python 中复杂属性访问的基础,它在内部被用于实现 property、方法、类方法、静态方法和 super 类型。
- __set__(self, obj, type=None):在设置属性时将调用这一方法(本节后续用 setter 表示);
- __get__(self, obj, value):在读取属性时将调用这一方法(本节后续用 getter 表示);
- __delete__(self, obj):对属性调用 del 时将调用这一方法。
实际上,在每次查找属性时,描述符协议中的方法都由类对象的特殊方法 __getattribute__() 调用(注意不要和 __getattr__() 弄混)。
本文共计929个文字,预计阅读时间需要4分钟。
在Python中,通过使用描述符,可以自定义对象属性的访问行为。本质上,描述符是一个类,它定义了属性的读取和写入操作。简而言之,一个类可以被定义为描述符,只要它实现了特定的方法,例如`__get__`和`__set__`,以便在属性访问时进行自定义处理。
Python 中,通过使用描述符,可以让程序员在引用一个对象属性时自定义要完成的工作。本质上看,描述符就是一个类,只不过它定义了另一个类中属性的访问方式。换句话说,一个类可以将属性管理全权委托给描述符类。
描述符类基于以下 3 个特殊方法,换句话说,这 3 个方法组成了描述符协议:描述符是 Python 中复杂属性访问的基础,它在内部被用于实现 property、方法、类方法、静态方法和 super 类型。
- __set__(self, obj, type=None):在设置属性时将调用这一方法(本节后续用 setter 表示);
- __get__(self, obj, value):在读取属性时将调用这一方法(本节后续用 getter 表示);
- __delete__(self, obj):对属性调用 del 时将调用这一方法。
实际上,在每次查找属性时,描述符协议中的方法都由类对象的特殊方法 __getattribute__() 调用(注意不要和 __getattr__() 弄混)。

