描述符类:
作用:描述另外一个类的属性(类包括属性和方法)
定义:至少实现了get()、set()、delete()中的一个
_ get_():调用一个属性时触发
_ set_():为一个属性赋值时触发
_ delete_():采用del删除属性时触发
class Colour:
``` Colour为描述符类```
def __get__(self, instance, owner):
print('self in Colour: %s ' % self )
print(self, ins, cls)
def __set__(self, instance, value):
pass
def __delete__(self, instance):
pass
class Flower:
#x=Colour()为Flower类的一个属性
x =Colour()
def prt(self):
print('self in Flower: %s' % self)
调用:
t = Flower()
t.prt()
#只有对描述符对应的类属性进行操作时才会触发描述符类的操作
t.x
结果:因为这里调用的是t.x,也就是说是Flower类的实例t的属性x,由于实例t中并没有定义属性x,所以找到了类属性x,而该属性是描述符属性,为Colour类的实例而已,所以此处并没有顶用Flower的任何方法。
self in Flower: <__main__.Flower object at 0x0000000002A570B8>
#在描述符类中,self指的是描述符类的实例
self in Colour: <__main__.Colour object at 0x000000000283E208>
<__main__.Colour object at 0x000000000283E208> <__main__.Flower object at 0x0000000002A570B8> <class '__main__.Flower'>