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

问题描述 投票:0回答:1

我偶然发现了这个不错的技巧,可以动态地分配一个 束缚法 到Python中的一个类实例。

class X: pass
def f(self): pass

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

我想知道的是,这种行为在引用中是在哪里指定的。 这是我找到的最接近的例子。

PEP 590

描述器使用指南

我想知道这种行为是否 事实上是在语言参考中指定的。 这似乎是一个足够重要的用例,可以由文档来保证(也就是说,不清楚出现在 指南 展示了一个有保证的语言功能或利用了一个实现细节,我想,原则上,所有有保证的功能都可以从规范中推导出来,而不需要参考 PEPs).

python python-3.x methods descriptor python-descriptors
1个回答
1
投票

您可能正在寻找 这一点`:

object.__get__(self, instance, owner=None) 调用的目的是获取所有者类的属性(类属性访问)或该类实例的属性(实例属性访问)。可选的 owner 参数是所有者类。

你基本上是在调用 function.__get__,其相当简单的实现(在CPython中)是 此处;它基本上调用 PyMethod_New,它基本上只是把一个函数与一个 self.

© www.soinside.com 2019 - 2024. All rights reserved.