从相应字符串返回类的更好方法

时间:2018-11-25 20:10:33

标签: python oop eval

我正在为游戏编写幻想编程语言。解释器所做的部分工作是将代码(字符串)转换为命令对象。例如,以下代码:

set var 1

创建一个名为var的变量,其值为1。在解释器中,这将创建Set命令类的新实例。当前,我有一个if语句列表来创建命令:

    if packet == "set":
        return commands.Set
    elif packet == "get":
        return commands.Get
    elif packet == "print":
        return commands.Print
    elif packet == "goto":
        return commands.Goto
    elif packet == "add":
        return commands.Add

但这是添加新命令时的真正痛苦。我必须添加命令类,将其添加到语法列表中,并将其添加到此处的表中。

我意识到eval可以在这里为我提供帮助,但是我知道那是被人鄙视的。

return eval("commands." + packet.capitalize())

有更好的方法吗?还是eval可以使用吗?

1 个答案:

答案 0 :(得分:3)

尝试一下:

componentWillUnmount