如何以与UI事件处理程序相同的方式调用类方法?

时间:2014-12-08 18:11:44

标签: python

我想完成以下任务。想象一下类的某个方法中的以下代码(我太懒了,不能写出整个类)。

foo = {"A": self.method1,
       "B": self.method2,
       "C": self.method3}

if var in foo.keys():
    foo[var]               # Executes one of the class methods

显然,这不起作用,否则我不会在这里问。

我尝试将()放在每个词典值的末尾:self.method1(),但这只会在创建foo时执行所有三种方法(正如我所料)。

我也试过了exec(foo[var])但是引发了TypeError。

基本上我尝试完成与UI事件相同的事情。该事件以下列方式绑定:

Bind(event_signal, self.method1)

当看到event_signal时,程序执行self.method1(event)。如果self.method1()中的var是关键字,我怎样才能让我的代码拨打foo

1 个答案:

答案 0 :(得分:5)

将括号放在代码中要调用方法的位置:

foo[var]()

请注意,如果该方法需要参数(例如event),则您必须通过foo[var](event)传递一个参数。您必须根据该方法对该参数的处理方式决定传入的内容。