我有课窗口。此类具有 onClick 方法,该方法获取在该窗口上单击的控件 id 的参数(我无法更改它的工作方式):
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
Self 获得对类的访问权限,而不是传递给该方法。所以我可以假设它可以访问课程,但无法弄清楚如何。