这是我的另一个问题( python closure + oop )的延续。在回答这个问题时,Winston Ewert 建议我使用 functools.partial 而不是 types.MethodType。
所以现在我的问题是:两者有什么区别?为什么认为 functool 方式更好?
ps。我已经成功地使用 functools.partial 来完成我的关闭,它确实感觉很酷。 :-)
最佳答案
从实际角度来看,没有太大区别。 Partial 会柯里化(Currying)任意数量的参数(在本例中为 1);实例方法会将 self 实例(无论发生什么)传递给包装函数;他们在做同样的事情!
不同之处在于它们在某种程度上记录了自己;在您链接的问题中;可调用的 closure
不是任何方法;它是一个常规函数,由 A
的方法返回;碰巧主体将 B
的实例视为第一个参数;但这还不足以使其成为 B 的“方法”。
所以这只是风格问题。您正在做的事情看起来更像 functools.partial
,因此您应该使用它,即使您可以使用 types.MethodType
关于python - types.MethodType 与 functools.partial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7700466/