文章 > Python基础教程 > Python描述器中__getattribute__调用

Python描述器中__getattribute__调用

头像

小妮浅浅

2021-03-15 14:49:47245浏览 · 0收藏 · 0评论

1、说明

在 Python 中 一切皆对象,所有对象都有一个默认的方法 __getattribute__(self, name)。

该方法会在我们使用 . 访问 obj 的属性时会自动调用,为了防止递归调用,它总是实现为从基类 object 中获取 object.__getattribute__(self, name), 该方法大部分情况下会默认从 self 的 __dict__ 字典中查找 name(除了特殊方法的查找)。

2、实例

描述器正是由 __getattribute__() 方法调用,其大致逻辑为:

def __getattribute__(self, key):
    v = object.__getattribute__(self, key)
    if hasattr(v, '__get__'):
        return v.__get__(self)
    return v

重写 __getattribute__() 会阻止描述器的自动调用。

以上就是Python描述器中__getattribute__调用,希望对大家有所帮助。更多Python学习推荐:python教学

关注公众号

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图 底部广告图按钮