我想完成以下任务。想象一下类的某个方法中的以下代码(我太懒了,不能写出整个类)。
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
?
答案 0 :(得分:5)
将括号放在代码中要调用方法的位置:
foo[var]()
请注意,如果该方法需要参数(例如event
),则您必须通过foo[var](event)
传递一个参数。您必须根据该方法对该参数的处理方式决定传入的内容。