types.MethodType与functools.partial

时间:2011-10-08 23:38:23

标签: python functional-programming

这是我的另一个问题(python closure + oop)的延续。在回答这个问题时,Winston Ewert建议我使用functools.partial而不是types.MethodType

所以现在我的问题是:两者之间的区别是什么?为什么functool方式被认为更好?

PS。我已经设法使用functools.partial来关闭它,它确实感觉很酷。 : - )

1 个答案:

答案 0 :(得分:3)

从实际的角度来看,没有太大的区别。部分将会讨论任意数量的参数(在本例中为1); instancemethod会将自我实例(无论发生什么)传递给包装函数;他们做同样的事情!

不同之处在于他们在某种程度上记录了自己;在您的链接问题中; closure callable不是任何方法;它是一个常规函数,由A的方法返回;碰巧身体看到B的实例作为第一个参数;但这还不足以使它成为B的“方法”。

所以这只是风格问题。你做的事情看起来更像functools.partial,所以你应该使用它,即使你可以用types.MethodType

达到同样的效果