私はクラスウィンドウを持っています。このクラスは、コントロールのIDを引数を取得する方法のonClickは(私はそれが仕事だ方法を変更することはできません)、そのウィンドウをクリックした:python(2.4)でこの種のデコレータを作ることは可能でしょうか?
class Window(SoneBaseWindowClass):
def onClick(self,controlID):
print controlID
私はコールバックスタックに私のメソッドを追加しますデコレータを作りたいです。 メソッドよりも、特定のコントロールがクリックされたときにonClickメソッドが呼び出されます。 ので:
class Window(SoneBaseWindowClass):
def __init__(self):
callback_stack = {}
def onClick(self,controlId):
callback = self.callback_stack.get(controlID)
if callback is not None:
callback()
# suppose to add decorated method to a callback_stack
def onclick_decorator(method):
pass
だから私はcallback_stack
にいくつかのメソッドを追加しますデコレータを作成する必要があります。を使用している例。
class MyWindow(Window):
@onclick_decorator(12345)
def someMethod(self):
print "Gets called when control with id 12345 clicked"
実際の質問は、私がonclick_decorator
自己がそのメソッドに渡されていないから、クラスへのアクセスもを得ることができる方法です。だから私はクラスにアクセスすることができると仮定することができますが、どのように把握できませんでした。
私はクラスで作ろうとしました。私は驚いたが、クラスのデコレータは私のpython2.4(xbmcで構築されているもの)で動作します – Pol
しかし、あなたはもっと高度です。私が指摘したように、私はメタクラスを通して作ろうとします。ありがとうございます。私がメタクラスを理解するのは良いスタートになるでしょう。 – Pol