我偶然发现了一个很好的技巧,可以为Python中的类实例动态分配绑定方法:
class X: pass
def f(self): pass
x = X()
x.f = f.__get__(x)
我想知道的是此行为在参考中指定的位置。这是我找到的最接近的东西:
我想知道实际上是否在语言参考中的某处指定了这种行为 。 看来文档足以保证足够重要的用例(即尚不清楚 HowTo 中出现的内容是否说明了保证的语言功能或使用了实现细节,我想认为原则上可以从规范中推导出所有有保证的功能,而无需参考 PEP s)。
答案 0 :(得分:1)
您可能正在寻找this bit`:
undefined
调用以获取所有者类的属性(类属性访问)或该类的实例的属性(实例属性访问)。可选的owner参数是owner类。
您实际上是在呼叫object.__get__(self, instance, owner=None)
,其相当简单的实现(无论如何在CPython中)是here;它基本上会调用PyMethod_New
,它基本上只是将函数与function.__get__
绑定。