我该怎么做这样的事情:
class Foo():
do_stuff = {
"A" : lambda x: self.do_A(x),
"B" : lambda x: self.do_B(x)
}
def __init__(self):
print "hi"
def run(self):
muh = ['A', 'B', 'A']
for each in muh:
self.do_stuff[each](each)
def do_A(self, moo):
print "A"
def do_B(self, boo):
print "B"
if(__name__ == '__main__'):
aFoo = Foo()
aFoo.run()
这导致它给出一个错误,即 self 没有在 lambda 函数中定义,但是如果我删除它。它说 do_A 或 do_B 没有定义。
编辑
我设法弄清楚了。我需要将 lambda 表达式更改为如下所示:
lambda x, y: x.do_A(y)
我会这样称呼它:
self.do_stuff[each](self, each)
这是一个可怕的想法吗?