为什么不将__get__转换成__get __.__ get__`?

时间:2018-07-05 08:11:04

标签: python

here我知道:每个函数实际上都是class Function的对象,并且由于描述符协议的原因,像a.b这样的表达式将被传输到{{1} }。

但是这里b.__get__(a, type(a))仍然是(Function类的)对象,那么为什么__get__不会进一步转换为b.__get__呢?

1 个答案:

答案 0 :(得分:1)

描述符协议不是Python内置的,它是默认类型的。 实现(定义{{​​1}},...)和调用(调用__get__)都是由function完成的,并且object类型以及其他类型。

Python内部具有裸函数和获取器,它们不实现member.__get__(self, type(self)__get__,...方法,也不会调用__set__member.__get__就是这种情况:

FunctionType.__get__