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

2024-04-23 06:12:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

class X: pass
def f(self): pass

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

我想知道的是这个行为在引用中的指定位置。这是我找到的最接近的一个:

PEP 590

Descriptor HowTo Guide

我想知道这个行为是否在语言引用的某个地方被指定了。 它似乎是一个足够重要的用例,需要文档的保证(也就是说,HowTo中出现的内容是否展示了保证的语言功能或使用了实现细节,目前尚不清楚,我认为原则上,所有保证的功能都可以从规范中推导出来,而无需参考PEPs)


1条回答
网友
1楼 · 发布于 2024-04-23 06:12:57

您可能正在寻找this bit`:

object.__get__(self, instance, owner=None) Called to get the attribute of the owner class (class attribute access) or of an instance of that class (instance attribute access). The optional owner argument is the owner class.

您实际上是在调用function.__get__,其相当简单的实现(无论如何,在CPython中)是here;它基本上调用^{},这基本上只是将函数与self绑定

相关问题 更多 >