【问题标题】:python dictionary, can't get correct valuepython字典,无法获得正确的值
【发布时间】:2017-04-10 13:00:19
【问题描述】:

一件事我看不懂,请解释一下

如果我们有这个代码

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

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

【问题讨论】:

    标签: python python-3.x class dictionary


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,知道了!我们将通过key 获取对象,当我们检索对象时,我们使用() 来调用函数,对吗?
    猜你喜欢
    • 2014-12-23
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多