【问题标题】:types.MethodType vs functools.partialtypes.MethodType vs functools.partial
【发布时间】:2011-10-08 23:38:23
【问题描述】:
这是我的另一个问题 (python closure + oop) 的延续。在回答这个问题时,Winston Ewert 建议我使用 functools.partial 而不是 types.MethodType。
所以现在我的问题是:两者之间有什么区别?为什么functool方式被认为更好?
ps。我已经设法使用 functools.partial 进行关闭,感觉确实很酷。 :-)
【问题讨论】:
标签:
python
functional-programming
【解决方案1】:
从实际的角度来看,并没有太大的区别。 Partial 将使用任意数量的参数(在本例中为 1); instancemethod 会将 self 实例(无论是什么)传递给包装函数;他们在做同样的事情!
不同之处在于它们在某种程度上记录了自己;在您的链接问题中; closure 可调用不是任何方法;它是一个常规函数,由A的方法返回;碰巧主体将B 的实例视为第一个参数;但这还不足以让它成为 B 的“方法”。
所以这只是风格问题。你正在做的事情看起来更像functools.partial,所以你应该使用它,即使你可以用types.MethodType达到同样的效果