看看這個代碼:lambda函數傳遞不希望自己
class MyClass_1():
@staticmethod
def method_1(func):
return func(1, 2, 3)
class MyClass_2():
my_func = lambda a,b,c : a*b*C# I need to call this method
def method_2(self):
result = MyClass_1.method_1(self.my_func)
print(result)
我的錯誤:
TypeError:() takes 3 positional arguments but 4 were given
我需要調用lambda函數my_func
以同樣的方式爲上面的代碼,而是一個self
出現在我不知道的地方,導致了這個錯誤。
我錯過了什麼?
你明白爲什麼'def my_func(a,b,c):return a * b * c'不起作用嗎? lambda和使用'def'一樣,如果你在一個類中定義它,你需要包含'self'。 – Duncan
是啊..這是一件值得思考的事情......即使我將其設置爲靜態也不行。 –
使用'@ staticmethod'可以起作用,'@ classmethod'你需要'cls'的第一個參數。在所有方面(除了tracebacks中顯示的函數名稱),lambda不會多於也不少於返回相同表達式的一行函數。 – Duncan