gpt4 book ai didi

python - lambda 函数可以作为类属性吗?

转载 作者:行者123 更新时间:2023-12-02 10:18:09 24 4
gpt4 key购买 nike

我希望有一些 lambda 函数可用于一个类的所有实例。因此,我的想法是将 lambda 函数声明为类属性。在下面的简单代码中,为什么我不能计算下面的 lambda 函数 f我已定义为类属性?

In [1]: class MyClass():
...: f = lambda x : 2 * x + 1
...: def __init__(self):
...: pass

In [2]: Inst = MyClass()

In [3]: MyClass.f
Out[3]: <unbound method MyClass.<lambda>>

In [4]: MyClass.f(2)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-5fc154bfb75c> in <module>()
----> 1 MyClass.f(2)

TypeError: unbound method <lambda>() must be called with MyClass instance as first argument (got int instance instead)

In [5]: Inst.f(3)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-90cde1a87da4> in <module>()
----> 1 Inst.f(3)

TypeError: <lambda>() takes exactly 1 argument (2 given)

最佳答案

就好像您写了以下内容:

class MyClass():
def f(x):
return 2 * x + 1

def __init__(self):
pass

第一个参数按照约定命名为 self,因此即使您没有将其命名为 self,您的函数也是一个实例方法,其第一个参数是当前实例MyClass

您需要将函数改为静态方法:

In [1]: %paste
class MyClass():
f = staticmethod(lambda x: 2 * x + 1)

def __init__(self):
pass

## -- End pasted text --

In [2]: MyClass.f(2)
Out[2]: 5

关于python - lambda 函数可以作为类属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42583645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com