我无法理解一件事,请解释
如果我们有这个代码
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
如何通过字典键正确调用函数?感谢。
答案 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