Python 使用字典选择要运行的函数

Python 使用字典选择要运行的函数,python,Python,我试图使用字典根据用户输入的内容选择要运行的函数。也就是说,如果用户输入“A”,则函数_A将运行,如果用户输入“B”,则函数_B将运行。我已经设置了字典,但遇到的问题是,所有不同的条目及其函数都在执行中。我使用字典功能是错误的还是我犯了错误?我对python还是相当陌生,所以我可能会犯一些真正的新手错误 我尝试将字典移到函数之外,但似乎不起作用 def set_race(self,race): 种族列表={ “龙生”:自我。角色。\u种族。选择\u龙生(), “矮人”:自我。性格。种族。选择矮人

我试图使用字典根据用户输入的内容选择要运行的函数。也就是说,如果用户输入“A”,则函数_A将运行,如果用户输入“B”,则函数_B将运行。我已经设置了字典,但遇到的问题是,所有不同的条目及其函数都在执行中。我使用字典功能是错误的还是我犯了错误?我对python还是相当陌生,所以我可能会犯一些真正的新手错误

我尝试将字典移到函数之外,但似乎不起作用

def set_race(self,race):
种族列表={
“龙生”:自我。角色。\u种族。选择\u龙生(),
“矮人”:自我。性格。种族。选择矮人(),
“Elf”:self.character\u race.选择\u Elf(),
“Gnome”:self.character\u race.select\u Gnome(),
“半精灵”:自我。角色。种族。选择半精灵(),
“半身人”:自我。角色。种族。选择半身人(),
“半兽人”:自我。角色。种族。选择半兽人(),
“人类”:自我。性格。种族。选择人类(),
“Tiefling”:self.character\u race.select\u Tiefling()
}
种族名单[种族]
当我运行代码时,我只希望执行一个函数。正如用户可能运行的那样

bob.set\u种族(“Elf”)
只有

self.character\u race.select\u elf()
将被执行。
但是现在,当调用set_race函数时,它会在到达race_列表[race]之前遍历每一行。这意味着正在执行所有不同的select race函数。

您在声明dict时调用函数。您还忘记了在末尾使用
()
调用函数

试试这个:

def set_race(self, race):

        race_list = {
            "Dragonborn": self.character_race.select_dragonborn,
            "Dwarf": self.character_race.select_dwarf,
            "Elf": self.character_race.select_elf,
            "Gnome": self.character_race.select_gnome,
            "Half-Elf": self.character_race.select_halfelf,
            "Halfling": self.character_race.select_halfling,
            "Half-Orc": self.character_race.select_halforc,
            "Human": self.character_race.select_human,
            "Tiefling": self.character_race.select_tiefling
        }

        race_list[race]()

尝试只指定函数名,而不指定
()
@DaemonPainter。首先,这不是问题所在。顺便说一句,python不支持第二种切换情况。在您给定的示例中,self始终可用。是的,这解决了问题!非常感谢你!请原谅我的提问,但是select_dragonborn()和select_dragonborn()之间有什么区别?对不起,之前关于self不可用的评论只是我带了dumb,没有删除我搬到其他地方的字典副本…不用担心!当您使用括号
()
时,您正在调用一个函数。如果没有括号,它就像引用此函数的变量。