0x0000000002633198>>
Bound Method 和 Unbound Method
method 还能再分为 Bound Method 和 Unbound Method, 他们的差别是什么呢...A.f 是 unbound method, 而 a.f 是 bound method, 从而验证了上面的描述是正确的!
看到这, 我们应该会有个问题:
方法的绑定, 是什么时候发生的?..., 第二列是指令的偏移量, 第三列是可视化指令, 第四列是参数, 第五列是指令根据参数计算或者查找的结果
咱们可以看到 第4列 和第五列, 分别就是对应: print A.f() 和 print a.f...()
他们都是同样的字节码, 都是从所在的codeobject中的co_name取出参数对应的名字, 正因为参数的不同, 所以它们分别取到 A 和 a,下面我们需要来看看 LOAD_ATTR 的作用是什么...(PCALL_METHOD);
PCALL(PCALL_BOUND_METHOD);
Py_INCREF(self);
func