美文网首页
python元编程中一些处理属性的特殊方法

python元编程中一些处理属性的特殊方法

作者: 第八共同体 | 来源:发表于2018-01-05 19:13 被阅读0次

    在用户自己定义的类中,下述特殊方法用于获取、设置、删除和列出属性
    使用点号,或者内置的的getattr,hasattr, setattr函数存取属性都会触发下述列表中的特殊方法。但是,直接通过实例的__dict__属性来存取方法不会触发这些特殊方法。所以,如果需要,在一些情况下,可以使用这种方法跳过特殊方法。
    示例,假设有个名为 Class 的类,obj 是 Class 类的实例,attr 是 obj 的属性。
    obj.attr 和 getattr(obj, 'attr', 42)都会触发Class.__getattribute__(obj, 'attr')方法。尝试获取指定属性时总会调用这个方法,不过,寻找的属性时特殊属性或者特殊方法时除外。
    del obj.attr 语句会触发Class.__delattr__(obj, 'attr')方法。
    dir(obj)语句会触发Class.__dir__(obj)方法。
    仅当获取指定的属性失败,搜索过 obj、Class 和超类之后调用Class.__getattr__(self, name)
    尝试设置指定的属性时总会调用Class.__setattr__(obj, 'attr', value),点号和setattr(obj, 'attr', 42)会调用这个方法。

    相关文章

      网友评论

          本文标题:python元编程中一些处理属性的特殊方法

          本文链接:https://www.haomeiwen.com/subject/eswsnxtx.html