gpt4 book ai didi

python - 将 lambda 函数添​​加到类的符号表中

转载 作者:行者123 更新时间:2023-12-01 02:51:18 32 4
gpt4 key购买 nike

我正在尝试将 lambda 函数添​​加到类的符号表中:

class B:
def __init__(self):
func = lambda self, x: x*x # <-- Adding 'self' produces error
self.__dict__['test1'] = func
print(self.test1(2))
print(self.test2(2))

def test2(self, b):
return b*b*b

b = B()

但这会产生错误(使用 python t.py 运行脚本):

Traceback (most recent call last):
File "./t.py", line 14, in <module>
b = B()
File "./t.py", line 8, in __init__
print(self.test1(2))
TypeError: <lambda>() missing 1 required positional argument: 'x'

但是,如果我删除 self作为 Lambda 函数的参数,它工作得很好。

为什么不是 self需要作为此处 Lambda 函数的参数吗?

最佳答案

类方法的调用:

instance.method(arg1, arg2, ..., argn)

内部绑定(bind)到:

instance_class.method(instance, arg1, ..., argn)

显然,instanceself

您将 lambda 存储为实例属性,它不会被视为实例方法。这就是为什么 self 不会作为第一个参数自动传递。

关于python - 将 lambda 函数添​​加到类的符号表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44739338/

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