在字典中存储函数[Python]

Rob*_*rum 9 javascript python arrays dictionary data-structures

我正在构建一个应用程序,我需要迭代一系列基本相同的步骤,节省了很少的代码(~15行).步骤数将根据项目的配置方式而有所不同,因此为每个潜在实例创建单独的函数似乎有点愚蠢.

在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]();
Run Code Online (Sandbox Code Playgroud)

有没有办法在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()
Run Code Online (Sandbox Code Playgroud)

如果我有大量的步骤,这似乎非常低效.还有什么更好的办法吗?

Rob*_*rum 2

看起来 Python 中没有办法做到这一点,这是一个故意做出的设计决定,因为它被认为不符合 Python 风格。哦,好吧,看起来我一直在定义方法,然后手动将它们添加到列表中以进行迭代。

来源: https: //softwareengineering.stackexchange.com/a/99245