给定一个类,我可以简单地通过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 中不再失败......