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