标签: python
从here我知道:每个函数实际上都是class Function的对象,并且由于描述符协议的原因,像a.b这样的表达式将被传输到{{1} }。
class Function
a.b
但是这里b.__get__(a, type(a))仍然是(Function类的)对象,那么为什么__get__不会进一步转换为b.__get__呢?
b.__get__(a, type(a))
__get__
b.__get__
答案 0 :(得分:1)
描述符协议不是Python内置的,它是默认类型的。 实现(定义{{1}},...)和调用(调用__get__)都是由function完成的,并且object类型以及其他类型。
function
object
Python内部具有裸函数和获取器,它们不实现member.__get__(self, type(self),__get__,...方法,也不会调用__set__。 member.__get__就是这种情况:
member.__get__(self, type(self)
__set__
member.__get__
FunctionType.__get__