• __getattr__,__getattribute__和__get__的区别


    dir(object)  列出对象的大多数属性

    getattr(object, name) 从object对象中获取name字符串指定的属性 

    hasattr(object, name) 如果object对象中存在指定的属性, 或者能以某种方式通过object 对象获取指定的属性, 返回True

    setattr(object, name, value) 把object对象指定属性的值设为value, 可能会创建一个新属性, 或者覆盖现有的属性

    getattr(obj, 'attr') 以及obj.attr 和hasattr(obj, 'attr')都会触发__getattribute__(obj, 'attr') 方法, 只有当尝试获取指定的属性失败,搜索过obj, class和超类之后调用__getattr__

    del obj.attr 触发Class.__delattr__(obj, 'attr')方法

    dir(obj)触发__dir__(obj)方法

    setattr(obj, name, value) 或则通过obj.attr 设置对象属性时会调用__setattr__(self, name, value)

    描述符是对多个属性运用相同存取逻辑的一种方式。

    描述符是实现了特定协议的类, 这个协议包括__get__, __set__和__delete__方法 

  • 相关阅读:
    Linux中的bin文件夹
    ubuntu安装deb包(dpkg)
    vim显示行号
    vim搜索结果高亮
    less和vim中使用正则表达式搜索
    正则表达式中的Quantifiers
    正则表达式解英语单词字谜
    [HDOJ4911]Inversion
    [LightOJ1282]Leading and Trailing
    [HDOJ1568]Fibonacci
  • 原文地址:https://www.cnblogs.com/frank-shen/p/10294701.html
Copyright © 2020-2023  润新知