我一直在使用一个 GUI 库,它允许您使用连接函数将信号连接到信号处理程序,例如:
widget.connect(signal, callback)
意味着callback
只要从小部件触发信号,该函数就会运行。为了使我的代码更好,并connect
从我的构造函数中删除一系列调用,我决定使用一个效果很好的装饰器:
def callback(widget, signal)
def decorate(f):
widget.connect(signal, f)
return f
return decorate
...
@callback(widget, signal)
def do_something():
...
这非常有效,直到我需要在一个类中执行此操作 - 函数在绑定到类之前被修饰,这意味着给定的回调函数不会获得拥有它的类的实例,使其无用。有没有办法让它工作?