嗨喽,大家好呀~这里是爱看美女的茜茜呐
数据描述符,属性查找优先级
如果在一个类中定义了 __get__() , __set__(), __delete__()
这三种方法之一,那么这个类是一个描述符。
描述符分成两种:
如果这种类只定义了 __get__
方法,那么就是一个非数据描述符,
定义了__get__()和__set__()
的数据描述符。
描述符的用处就是,当一个对象的某个属性是一个描述符时,你访问这个描述符类型的属性,就会调用这个描述符的方法。
譬如你获取描述符的值时,会调用它的__get__().
我们先看一下这三个方法的docstring:
def __delete__(self, *args, **kwargs): # real signature unknown
""" Delete an attribute of instance. """
# 删除一个实例的属性
def __set__(self, *args, **kwargs): # real signature unknown
""" Set an attribute of instance to value. """
# 给实例的属性设置一个值
def __get__(self, *args, **kwargs): # real signature unknown
""" Return an attribute of instance, which is of type owner. """
# 返回实例的属性,该实例是 `owner` 类型的
👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~
python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可
实例:
class A(object):
def __init__(self):
self.value = None
def __set__(self, instance, value): # self:类A的实例,也是类B的属性a;instance:类 B 的实例 b;value:通过b.a的赋值
print<