Adding lambda functions to a symbol table of a class
本问题已经有最佳答案,请猛点这里访问。
我正在尝试将lambda函数添加到类的符号表中:
1 2 3 4 5 6 7 8 9 10 11 | 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() |
但这会产生一个错误(使用
1 2 3 4 5 6 | 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' |
但是,如果我删除EDOCX1[1]作为lambda函数的参数,它就可以正常工作。
为什么这里不需要EDOCX1[1]作为lambda函数的参数?
类方法的调用:
1 | instance.method(arg1, arg2, ..., argn) |
内部绑定到:
1 | instance_class.method(instance, arg1, ..., argn) |
其中,显然,
您将lambda存储为实例属性,这不会被视为实例方法。这就是为什么