语言参考中描述的python函数的描述符协议在哪里?

时间:2020-05-15 13:50:07

标签: python python-3.x methods descriptor python-descriptors

我偶然发现了一个很好的技巧,可以为Python中的类实例动态分配绑定方法

class X: pass
def f(self): pass

x = X()
x.f = f.__get__(x)

我想知道的是此行为在参考中指定的位置。这是我找到的最接近的东西:

PEP 590

Descriptor HowTo Guide

我想知道实际上是否在语言参考中的某处指定了这种行为 。 看来文档足以保证足够重要的用例(即尚不清楚 HowTo 中出现的内容是否说明了保证的语言功能或使用了实现细节,我想认为原则上可以从规范中推导出所有有保证的功能,而无需参考 PEP s)。

1 个答案:

答案 0 :(得分:1)

您可能正在寻找this bit`:

undefined 调用以获取所有者类的属性(类属性访问)或该类的实例的属性(实例属性访问)。可选的owner参数是owner类。

您实际上是在呼叫object.__get__(self, instance, owner=None),其相当简单的实现(无论如何在CPython中)是here;它基本上会调用PyMethod_New,它基本上只是将函数与function.__get__绑定。