好吧,这就是问题所在,我有这样的课
Class MyClass(GuiWidget):
def __detectWhichItemClicked(self):
pass
def __handleRightClickItem1(self):
pass
def __handleRightClickItem2(self):
pass
def __handleRightClickItem3(self):
pass
def __handleRightClickItem4(self):
pass
__detectWhichItemClicked是检查哪个item被点击的函数,如果点击不同的item会触发不同的进程,不同的进程在__handleRightClickItem*函数中实现。当代码更新时,可能会添加新的 __handleRightClickItem* 函数。
所以通过这种方式,我想将__handleRightClickItem*的“函数指针”指向一个dict,如果这个dict由MyClass实例拥有,那么每个MyClass实例都会得到一个副本,这可能会浪费内存。如何将这些东西添加到类成员并在实例方法中调度 __handleRightClickItem*,例如 __detectWhichItemClicked。
我可能想像这样实现它:
class MyClass:
functionMap = {
"ITEM1": __handleRightClickItem1, //how can i add instance method to class member
"ITEM2": __handleRightClickItem2,
"ITEM3":....
};
def __detechWhichItemClicked(self):
itemName = getItemName()
if itemName in self.__class__.functionMap.keys():
self.__class__.functionMap[itemName](arg)
可能我更喜欢它像以前一样隐含,但是,这可能不是那么优雅,有人可以展示如何解决这个问题吗?