どうすればこのようなことができますか:
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()
これにより、セルフがラムダ関数で定義されていないというエラーが発生しますが、それを削除すると。do_A または do_B が定義されていません。
編集
私はそれを理解することができました。ラムダ式を次のように変更する必要があります。
lambda x, y: x.do_A(y)
そして私はそれを次のように呼びます:
self.do_stuff[each](self, each)
これはひどい考えですか?