这看起来很琐碎,但由于某种原因,我的字典无法工作。
这是我的代码:
class Calculator():
def __init__(self):
number = input()
self.switch_case(number)
def switch_case(self, number):
switcher = {
1: self.one(),
2: self.two(),
}
def one(self):
print("something")
def two(self):
print("something")
出于某种原因,即使我只输入值1作为输入,它也会调用函数one((和two((。
实际上它什么都不调用。所显示的代码永远不会运行。
但是,如果要创建一个Calculator
实例,则会运行__init__
,然后运行switch_case
并通过计算值表达式来初始化字典。这将调用这两个函数。
如果您现在不想运行它们,请删除括号:
switcher = {
1: self.one,
2: self.two,
}
并在需要时调用函数,比如:
self.switcher[1]()
请注意将执行调用的()
。
创建dictionary时,首先调用这些方法=这就是为什么您看到东西两次,然后将从方法返回的值分配给dict(在这种情况下为None,因为方法只打印,不返回任何值(。