私は、接続関数を使用してシグナルをシグナルハンドラーに接続できる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():
...
これは、クラスでこれを行う必要があるまではうまく機能します。関数は、クラスにバインドされる前に装飾されます。つまり、指定されたコールバック関数は、それを所有するクラスのインスタンスを取得せず、役に立たなくなります。これを機能させる方法はありますか?