Python中的静态Lambda [英] Static lambdas in python
本文介绍了Python中的静态Lambda的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在python中有这样的课程
I have class in python like this
import numpy as np
class BackPropogationNetwork:
# Static lambdas
sigmoid = lambda x : 1/(1+np.exp(-x))
sigmoid_prime = lambda sigmoid: sigmoid(1-sigmoid)
这是建设者
def __init__(self):
self.some_attr = self.sigmoid(2)
我收到此错误
TypeError: <lambda>() takes exactly 1 argument (2 given)
如果我这样打
self.some_attr = ClassName.sigmoid()
我收到此错误
TypeError: unbound method <lambda>() must be called with BackPropogationNetwork instance as first argument (got int instance instead)
推荐答案
您需要将lambda包装在 staticmethod
对象:
You need to wrap the lambdas in staticmethod
objects:
class BackPropogationNetwork:
sigmoid = staticmethod(lambda x : 1/(1+np.exp(-x)))
sigmoid_prime = staticmethod(lambda sigmoid: sigmoid(1-sigmoid))
lambda
表达式仍会生成函数对象,只是使用不同的(有限的)语法.相同的规则适用于在类中定义函数.如果您希望它是一个静态方法,那么您仍然需要将它们包装起来.
lambda
expressions still produce function objects, just using different (limited) syntax. The same rules apply as defining functions in a class; if you want it to be a static method then you still need to wrap them.
这篇关于Python中的静态Lambda的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文