python 什么叫描述符类? 描述符类详解(特别说明:在描述符类中,self指的是描述符类的实例)

描述符类:
作用:描述另外一个类的属性(类包括属性和方法)
定义:至少实现了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> 

你可能感兴趣的:(python 什么叫描述符类? 描述符类详解(特别说明:在描述符类中,self指的是描述符类的实例))