将复合函数名称存储在字典中而不是字符串

时间:2021-03-07 15:35:24

标签: python python-3.x function dictionary menu

我有一个 python3.8 菜单命令字典,我正在尝试使用函数中的菜单名称将这些函数添加到另一个字典中。所以 'save' 变成了 'self.menu_save' 不幸的是,当我用像 'self.menu_' + menuname 这样的连接方式保存它时,我在字典中得到一个不可执行的字符串,我可以手动输入名称,但是我可以构建一个类,菜单名称是从子类输入的 我希望能够做到这一点:

self.pri_menu = {'file': ['save', 'new', 'open', 'delete', 'print'],
                         'edit': ['select', "update", 'delete', 'insert']}

然后迭代:最后得到 {'save': self.menu_save, 'new':self.menu_new,...} 我目前的尝试给我留下了 {save:'self.menu_save','new':'self.menu_new',...}

     self.menu_commands[y] = 'self.menu_' + y
     self.menu_items[row].add_command(label=y, command=self.menu_commands[y])

这不起作用。 Y 是我的迭代器所以“保存”等等。 打印(self.menu_commands)=

{'save': 'self.menu_save', 'new': 'self.menu_new', 'open': 'self.menu_open', 'delete': 'self.menu_delete', 'print': 'self .menu_print', 'select': 'self.menu_select', 'update': 'self.menu_update', 'insert': 'self.menu_insert'}

我在一个类中这样做,所以引用/指针必须在类中.感谢所有帮助。

1 个答案:

答案 0 :(得分:0)

x = 'self.menu_' + y
self.commands[y] = eval(x)
self.menu_items[row].add_command(label=y, command=self.commands[y])

效果很好,谢谢,只需要正确的搜索词,谷歌就帮了我。现在我也可以使用命令而无需像这样的菜单 self.commands['save'] 或 self.commands.get('save') 是蟒蛇。

我的下一个问题应该是向函数添加参数,但改天。

相关问题