我在对象中有这个非常简单的函数:
def ctrl_btn_press(self, event):
print event.GetEventObject().GetName()
getattr(self, event.GetEventObject().GetName())
事件是一个wxpython事件。这些名称位于配置文件的列表中,我gui中的按钮被设置为此事件处理程序对象中将按下该按钮的函数名称。
打印工作,打印,例如" alm_switch_away"。但是,函数调用getattr不起作用。这是它应该调用的函数(使用打印函数来测试代码"到达那里")但是没有任何内容被打印出来:
def alm_switch_away(self):
print "HERE!"
你能看到我做错了什么吗?
答案 0 :(得分:2)
如果无法正常工作您的意思是我得到了AttributeError
,那么您需要查看字符串表示< / em>输出而不是在事件名称中找到任何不可打印的字符:
print repr(event.GetEventObject().GetName())
如果你的意思是实际上没有发生,那就是因为你从不对你查找的方法做任何事情。你不是调用方法。在()
电话后添加getattr()
:
event_method = getattr(self, event.GetEventObject().GetName())
event_method()
或组合成一行:
getattr(self, event.GetEventObject().GetName())()