我目前正在构建一个应用程序,我需要遍历一系列完成相同事情的步骤,保存非常少量的代码(〜15行)。步骤的数量取决于项目的配置方式,因此对于我为每个潜在实例创建一个单独的函数似乎很愚蠢。在字典中存储函数[Python]
在JavaScript中,我会做这样的事情:
var switches = [true, true, false, true];
var holder = {
0: function() { /* do step0 */ }
1: function() { /* do step1 */ }
2: function() { /* do step2 */ }
3: function() { /* do step3 */ }
// ...etc...
}
for (var i = 0; i < switches.length; i++)
if (switches[i])
holder[i]();
有没有办法做到在python类似这样的东西吗?我能想到的唯一事情就是这样的:
switches = [True, True, False, True]
class Holder(object):
@staticmethod
def do_0():
# do step0
@staticmethod
def do_1():
# do step 1
# ...etc...
def __repr__(self):
return [self.do_0, self.do_1, ...]
for action in Holder:
action()
这似乎是非常低效的,如果我有任何大量的步骤。有没有更好的方法来解决这个问题?
装饰者可能更符合你想要的 – 2015-03-25 00:40:08
这样做最好的方法是什么?如果我使用相同的装饰器定义所有的函数,是否有任何简单的方法循环遍历它们,而不需要创建一个循环列表? – 2015-03-25 01:04:38