我目前正在構建一個應用程序,我需要遍歷一系列完成相同事情的步驟,保存非常少量的代碼(〜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