我偶然发现了这个不错的技巧,可以动态地分配一个 束缚法 到Python中的一个类实例。
class X: pass
def f(self): pass
x = X()
x.f = f.__get__(x)
我想知道的是,这种行为在引用中是在哪里指定的。 这是我找到的最接近的例子。
我想知道这种行为是否 是 事实上是在语言参考中指定的。 这似乎是一个足够重要的用例,可以由文档来保证(也就是说,不清楚出现在 指南 展示了一个有保证的语言功能或利用了一个实现细节,我想,原则上,所有有保证的功能都可以从规范中推导出来,而不需要参考 PEPs).
您可能正在寻找 这一点`:
object.__get__(self, instance, owner=None)
调用的目的是获取所有者类的属性(类属性访问)或该类实例的属性(实例属性访问)。可选的 owner 参数是所有者类。
你基本上是在调用 function.__get__
,其相当简单的实现(在CPython中)是 此处;它基本上调用 PyMethod_New
,它基本上只是把一个函数与一个 self
.