如何在Python中使用用户输入来调用方法

时间:2019-08-24 19:03:32

标签: python input methods

让我说一堂课。在该类的内部有两种方法。在该类之外,脚本要求用户输入。用户的输入如何用于调用类中的方法?我想弄清楚这一点的原因是,如果我在一个文件中有多个类,并且希望用户的输入能够与每个不同类中包含的方法进行交互。

我尝试使用引用引用中的类的命令列表,但我认为没有任何效果。我试图找到这个问题的答案,但是我发现的一切都与用户输入有关,而不是在类中,我知道该怎么做。

这是我尝试做的一个简单示例:

class Character:
        def __init__(self, attributes = [], *args):
                self.name = attributes[0]
                self.health = attributes[1]

        def HEAL(self):
                self.health = self.health + 5
                return(self.health)

Spell_List = ["HEAL"]

Command_List = {"HEAL":Character}

Player = Character("John", 25)

Command = raw_input("Select an action: ").upper()

for Spell in Spell_List:
        if (Command == Spell):
                Command_Result = Player.Command_List[Command]()
                print(Command_Result)
        else:
                print("Action Not Recognized")

如果我要执行脚本并提供“ heal”作为输入,则希望脚本在Character类中调用HEAL方法。然后出于以下原因将打印数字30:

1。)Player变量声明起始编号为25。

2。)该方法会将那个数字增加5。

但是,使用立即编写脚本的方式,脚本会出错并显示以下内容: “ AttributeError:字符实例没有属性'Command_List'”。

您有什么想法?

1 个答案:

答案 0 :(得分:3)

您可以在您的角色类上创建一个表演动作功能,然后可以在需要的地方调用它

def perform_action(self, action, *args, **kwargs):
    actions = { 'HEAL': self.HEAL }
    return actions[action](*args, **kwargs)

然后在班级外面,您只需使用Player.perform_action('HEAL')

Command_Result = Player.perform_action(Command)

在使用前添加错误处理