我理解的意思是有一种方法对象类型,它实现了
__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
然而,object.__getattribute__
本身就是一个方法!那么它是如何绑定到一个对象上的(而不会导致无限递归)?如果在属性查找中特殊处理它,那是否就失去了移除旧式特殊处理的目的?
function
类型(参见https://wiki.python.org/moin/FromFunctionToMethod)。 - bruno desthuilliers