我该怎么做:
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函数中没有定义self,但是如果我删除它。上面写着“做”或“做”没有定义。在
编辑
我设法弄明白了。我需要把lambda表达式改成这样:
^{pr2}$我会这样称呼它:
self.do_stuff[each](self, each)
这是个糟糕的主意吗?在
dou-stuff不是您的示例中的实例变量。它更像是一个静态变量。您需要在一个方法(例如init方法)中定义do_-stuff,在该方法中,您可以引用self,以便使其成为实例变量。我希望这个例子能为您阐明一些事情:
注意lambda函数不是必需的。您只需在字典中存储对函数本身的引用。“符号”自我介绍“将自动传递self作为第一个参数。在
编辑:有人知道如何使下划线在非代码示例文本中正确显示吗?
编辑:WTH?预览显示的下划线与文章不同。在
相关问题 更多 >
编程相关推荐