以下代码:
def foo(a):
print(a)
class A(object):
callback = foo
def do(self):
self.callback(1)
A().do()
产生以下错误:
Traceback (most recent call last):
File "/home/bastien/Projects/test/t.py", line 13, in <module>
A().do()
File "/home/bastien/Projects/test/t.py", line 10, in do
self.callback(1)
TypeError: foo() takes 1 positional argument but 2 were given
因为foo
函数像实例函数一样使用。我可以在@staticmethod
函数上添加foo
装饰器,但是:有没有办法去适应&#34;没有触摸A.do
功能的foo
的行为?
答案 0 :(得分:0)
您可以使用lambda
来包装您的功能
def foo(a):
print(a)
class A(object):
callback = (lambda self, x: foo(x))
def do(self):
self.callback(1)
A().do()