这是我的另一个问题(python closure + oop)的延续。在回答这个问题时,Winston Ewert建议我使用functools.partial
而不是types.MethodType
。
所以现在我的问题是:两者之间的区别是什么?为什么functool方式被认为更好?
PS。我已经设法使用functools.partial来关闭它,它确实感觉很酷。 : - )
答案 0 :(得分:3)
从实际的角度来看,没有太大的区别。部分将会讨论任意数量的参数(在本例中为1); instancemethod会将自我实例(无论发生什么)传递给包装函数;他们做同样的事情!
不同之处在于他们在某种程度上记录了自己;在您的链接问题中; closure
callable不是任何方法;它是一个常规函数,由A
的方法返回;碰巧身体看到B
的实例作为第一个参数;但这还不足以使它成为B的“方法”。
所以这只是风格问题。你做的事情看起来更像functools.partial
,所以你应该使用它,即使你可以用types.MethodType