Getattr自我不工作,它应该工作吗?

时间:2015-03-30 18:43:07

标签: python object wxpython getattr

我在对象中有这个非常简单的函数:

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!"

你能看到我做错了什么吗?

1 个答案:

答案 0 :(得分:2)

如果无法正常工作您的意思是我得到了AttributeError ,那么您需要查看字符串表示< / em>输出而不是在事件名称中找到任何不可打印的字符:

print repr(event.GetEventObject().GetName())

如果你的意思是实际上没有发生,那就是因为你从不对你查找的方法做任何事情。你不是调用方法。在()电话后添加getattr()

event_method = getattr(self, event.GetEventObject().GetName())
event_method()

或组合成一行:

getattr(self, event.GetEventObject().GetName())()