3
我怎样才能做这样的事情:课堂内的Dictonaries和Lambda?
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()
这导致它给自我未在lambda函数中定义的错误,但如果我将其删除。它说do_A或do_B没有被定义。
编辑
我设法弄明白。我需要改变lambda表达式弄成这个样子:
lambda x, y: x.do_A(y)
,我会这样称呼它:
self.do_stuff[each](self, each)
这是一个可怕的想法?
+1:更简单。没有兰姆达斯。 – 2008-11-13 21:31:08