相关疑难解决方法(0)

__getattr__与__getattribute__之间的区别

我想知道何时使用__getattr____getattribute__.该文件提到了__getattribute__适用于新样式类.什么是新式课程?

python getattr getattribute

378
推荐指数
8
解决办法
12万
查看次数

Python:__ getattribute__方法和描述符

根据本指南python描述符 https://docs.python.org/2/howto/descriptor.html

新样式类中的方法对象是使用描述符实现的,以避免在属性查找中特殊包装它们.

我理解这一点的方法是有一个方法对象类型实现__get__并在使用实例和未绑定的方法对象调用时返回绑定的方法对象,在没有实例和只有类的情况下调用.文章还指出,这个逻辑是在object .__ getattribute__方法中实现的.像这样:

def __getattribute__(self, key):
    "Emulate type_getattro() in Objects/typeobject.c"
    v = object.__getattribute__(self, key)
    if hasattr(v, '__get__'):
       return v.__get__(None, self)
    return v
Run Code Online (Sandbox Code Playgroud)

但是对象.__ getattribute__本身就是一种方法!那怎么绑定一个对象(没有无限递归)?如果它在属性查找中是特殊的,那不会破坏删除旧式特殊套管的目的吗?

python attributes python-internals

3
推荐指数
1
解决办法
1346
查看次数