给定一个类,我可以简单地通过A
添加一个实例方法a
def a(self):
pass
A.a = a
但是,如果我尝试添加另一个 classB
的 instancemethod b
,即A.b = B.b
尝试调用会A().b()
产生
TypeError
:b()
必须以B
实例作为第一个参数调用未绑定的方法(什么都没有)
(虽然B().b()
很好)。确实有区别
A.a -> <unbound method A.a>
A.b -> <unbound method B.b> # should be A.b, not B.b
所以,
- 如何解决这个问题?
- 为什么会这样?这似乎并不直观,但通常 Guido 有一些很好的理由......
奇怪的是,这在 Python3 中不再失败......