描述符__get__,__set__,__delete__

描述符__get__,__set__,__delete__

# 描述符:1用来代理另外一个类的属性
# __get__():调用一个属性时,触发
# __set__():为一个属性赋值时触发
# __delete__():采用del输出属性时,触发

# 定义一个描述符的格式,里面包括有__get__,__set__,__delete__方法,这样的一个类就被叫做描述符
# 该描述符的作用是为另外一个类的类属性进行服务,另外一个类就是描述符的对象
class Foo:
    def __get__(self, instance, owner): #取值
        print('get触发')

    def __set__(self, instance, value):#赋值
        print('set触发')

    def __delete__(self, instance):#删除
        print('delete触发')
# 以上都被称为描述符,他的作用主要在于对另外一个类进行服务

class Bar:  #这个类必须是新式类,当然py3中默认都是新式类.

    x = Foo()  #既然是描述符服务于另外一个类的属性,那么这里就用上了,即将这个类作用于另外一个类的属性来使用



f = Bar()  #这些地方被触发
f.x  #get触发  这样就触发了这样一个描述符里面的get方法

f.x = 'age' #set触发
f.x #get触发

del f.x #delete触发
原文地址:https://www.cnblogs.com/sunny7/p/9727334.html