python - types.MethodType 与 functools.partial

标签 python functional-programming

这是我的另一个问题( 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/

相关文章:

python - python 关联文件中的项目

Python:使用 Chrome 浏览器进行操作

java - 如何使用 Stream API 从对象中检索嵌套列表?

javascript - 通过 ids 匹配 2 个数组(用户[用户 id 作为键]到订单[订单 ids 数组的值])

c# - C# "pure"中的 lambda 表达式/委托(delegate)是,还是可以?

python - 使用未转义的换行符清理制表符分隔文件

python - 如何处理 PythonCard 中的 mouseMiddleDrag 事件?

python - (Python,数据帧): Add a Column and insert the nth smallest value in the row

c++ - 接受一个参数并返回它的函数

android - Kotlin如何实现android setOnClickListener之类的语法