什么是python中的_curried方法,它们是如何生成的?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了什么是python中的_curried方法,它们是如何生成的?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1895字,纯文字阅读大概需要3分钟。
内容图文
![什么是python中的_curried方法,它们是如何生成的?](/upload/InfoBanner/zyjiaocheng/809/670af968640c4c25a87b52f86cde1f5e.jpg)
Apologies upfront if this is a dupe; I search for “_curried python” and got 14 results, and then simply _curried” and that only bumped up to 33 results, and none seemed to help out…
问题:我遇到了我原本认为今天我们的代码库中的拼写错误,这里是嫌疑人:
student.recalculate_gpa()
现在,我怀疑它是一个错字,因为student是没有recalculate_gpa方法的Student类的实例.但是,它确实有一个calculate_gpa方法:
class Student(User):
...
def calculate_gpa(self):
# some calculations...
(其中User是标准的django用户类.)但是,代码没有错误,这对我没有意义.所以我做了检查,发现了这个:
... (a bunch of methods)
('calculate_gpa', <unbound method Student.calculate_gpa>),
... (some more methods)
('recalculate_gpa', <unbound method Student._curried>),
奇怪的是,recalculate_gpa实际上是一种方法.但它究竟来自哪里呢?我在代码库中找到了“_curried”并没有发现任何内容,所以这必须是与Django相关的一些行为.当然我希望在我们项目的某个地方我们已经描述了动态命名函数是如何形成的,因为重新计算似乎是计算的合理推导,但老实说我不知道??从哪里开始寻找.
因此,我的问题是:如何生成像上面那样的curried方法,我应该从哪里开始寻找我们自己的代码库是如何进行咖喱的?
非常感谢提前!
解决方法:
一个curried方法是在你实际调用它之前部分调用一个方法
例如
from functools import partial
from itertools import count
def my_pow(x,y):
return x**y
curried_pow2n = partial(my_pow,x=2)
for i in count(0): #print the 2**i
print curried_pow2n(i)
你也可以用lambda轻松实现它
curried_pow2n = lambda x:return my_pow(2,x)
虽然我不确定这与你的实际问题有什么关系……
django还提供了一个非常类似于functools.partial的咖喱方法
from django.utils.functional import curry
lols = {'lols':'lols'}
formset = modelformset_factory(MyModel, form=myForm, extra=0)
formset.form = staticmethod(curry(MyForm, lols=lols))
(自https://stackoverflow.com/a/25915489/541038起)
所以你可能想找Student.recalculate_gpa =
或者也许在Student.__ init__方法中为self.recalculate_gpa =
你可能不会发现它正在寻找def recalculate_gpa
内容总结
以上是互联网集市为您收集整理的什么是python中的_curried方法,它们是如何生成的?全部内容,希望文章能够帮你解决什么是python中的_curried方法,它们是如何生成的?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。