类的描述符

描述符的定义

描述符本质就是新式类,在这个新式类中,至少实现了__get__()、set()、delete()中的一个,这也被称为描述符协议

_ get_():调用一个属性时触发
_ set_():为一个属性赋值时触发
_ delete_():采用del删除属性时触发

描述符作用

定义一个描述符:

class Foo:
    def __get__(self, instance, owner):
        pass

    def __set__(self, instance, value):
        pass

    def __delete__(self, instance):
        pass

描述符的作用:代理另外一个类的属性(必须将描述符定义成这个类的类属性,不能定义到__init__()方法中)

描述符产生的实例进行属性操作并不会触发三个方法的执行

class Foo:
    def __get__(self, instance, owner):
        pass

    def __set__(self, instance, value):
        pass

    def __delete__(self, instance):
        pass


f1 = Foo()
f1.name = "CJJ"
print(f1.name)
del f1.name

描述符的作用是代理另一个类的某个变量,当对那个变量进行操作的时候才会触发描述符内的方法

class Foo:
    def __get__(self, instance, owner):
        print("__get__执行啦")

    def __set__(self, instance, value):#这里的self是实例自己,相当于f1.__set__()
        print("__set__执行啦")

    def __delete__(self, instance):
        print("__delete__执行啦")


class Bar:
    name = Foo()

    def __init__(self, name, age):
        self.name = name
        self.age = age


f1 = Bar("MB", 18)
f1.name = "Cjj"
del f1.name
print(f1.age)
print(Bar.name)#通过类调用被代理变量也会触发描述符
print(type(f1)</
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值