Python中,一个类中实现了__get__、__set__、__delete__三个方法中的任何一个方法,
那么这个类就是描述器.... B.x为None,None没有a1属性
print('*' * 20)
b = B()
# print(b.x.a1) # AttributeError B.x为None,None没有a1属性...__的属性名清空,从而达到数据描述器优先于查实例字典的假象
Python中的描述器
描述器在Python中应用非常广泛
Python的方法(包括staticmethod()和classmethod()...上述实现的拦截地方:
在类初始化时,在对实例属性赋值之前拦截
使用装饰器,和inspect模块,在实例化之前进行参数检查
使用描述器,在初始化时对实例属性设置时...,触发描述器的__set__方法,在__set__方法中进行参数检查,再对其实例的类添加类属性
(如果添加在实例上,则会递归调用回到__set__方法)
使用装饰器获取参数注解