python字典,无法获得正确的值

时间:2017-04-10 13:00:19

标签: python python-3.x class dictionary

我无法理解一件事,请解释

如果我们有这个代码

import sys
from test import bye, hello


class Example:

    COMMANDS = {
        'h': hello(),  # print 'hello'
        'b': bye(),    # print 'bye'
    }

    def __init__(self, arg):
        self.arg = self.check(arg)

    def check(self, arg):
        return self.COMMANDS.get(arg)


if __name__ == '__main__':
    Example(sys.argv[1])

我运行脚本python test2.py h 如果类返回hello,那将是合乎逻辑的,因为参数是h 但是课堂回归

hello
bye

如何通过字典键正确调用函数?感谢。

1 个答案:

答案 0 :(得分:2)

您的COMMANDS类变量应该包含函数对象,而不是函数调用的结果:

COMMANDS = {
    'h': hello,  # print 'hello'
    'b': bye,    # print 'bye'
}

然后,check应该调用该函数并返回它的值:

def check(self, arg):
    return self.COMMANDS.get(arg)()  # () call the function object