使用回调而不考虑实例函数

时间:2017-08-11 08:59:23

标签: python

以下代码:

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的行为?

1 个答案:

答案 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()