zoukankan      html  css  js  c++  java
  • 描述符

    # 描述符,相当于一个代理
    class Str:
        def __init__(self,name):
            self.name = name
        # 取值操作时使用
        # instance:传入对象
        # owner:对象的类
        def __get__(self, instance, owner):
            print("get--->",instance,owner)
            # 返回对象的name属性
            return instance.__dict__[self.name]
        # 赋值操作时使用
        def __set__(self, instance, value):
            print("set-->",instance,value)
            # 设置属性
            instance.__dict__[self.name] = value
        # 删除操作时使用
        def __delete__(self, instance):
            print("delete——--》",instance)
            instance.__dict__.pop(self.name)
    class People:
        name=Str('name')
        print(name)
        def __init__(self,name,age,salary):
            self.name=name
            print(self.name)
            self.age=age
            self.salary=salary
    
    p1 = People('wangconng',21,-1000)
    
    # 调用
    print(p1.__dict__)
    p1.name
    
    # 赋值
    print(p1.__dict__)
    p1.name = 'cong'
    print(p1.__dict__)
    
    #删除
    print(p1.__dict__)
    del p1.name
    print(p1.__dict__)
    
    # 描述符分为两种
    # 数据描述符:至少实现了__set__(),__get__()
    # 非数据描述符:没有实现__set__()
    # 类操作属性>数据描述符
    # 数据描述符 > 对象操作属性
    # 对象描述符 > 非数据属性
    # 非数据属性 > 找不到
  • 相关阅读:
    spring 注解笔记
    spring boot 拦截器
    spring boot 启动流程及其原理
    Spring之BeanFactory和FactoryBean接口的区别
    微信支付
    三级联动
    搜索分页
    多选标签
    分类界面 大分类小分类
    触底下拉
  • 原文地址:https://www.cnblogs.com/cong12586/p/11372332.html
Copyright © 2011-2022 走看看