如何通过命令函数传递许多参数(do_)

时间:2014-04-26 03:12:29

标签: python-3.x command-line-arguments

我想编写一个简单的命令,可以为文本冒险游戏带来3个参数。

基本上在提示符下,我会输入'使用钥匙解锁门',它会运行一个特定的块。

以下是我编码但不起作用的内容:

def do_use(self, tool, action, object):

    if tool == 'key':
        if action == 'unlock':
            if object == 'door':
                print("seems like it works!")
            else:
                print("nope 1")
        else:
            print("nope 2")
    else:
        print("nope 3")     

注意:其余命令工作正常。我导入了cmd 以下是主要代码:

class Game(cmd.Cmd):

    def __init__(self):
        cmd.Cmd.__init__(self)

    ....


    if __name__ == "__main__":
        g = Game()
        g.cmdloop()

在提示符处,当我输入:

>>> use key unlock door

我收到以下错误消息:

TypeError: do_use() takes exactly 4 arguments (2 given)

如果打印出代码,代码就会起作用:

seems like it works!

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

阅读该文档,看起来所有命令只需要一个字符串,你必须自己解析字符串。您的命令被定义为接受4个参数(包括self),而cmd使用self, input调用它,即2.我认为可以通过以下方式获得您想要的结果:< / p>

def do_use(self, user_input):
    args = user_input.split()
    if len(args) != 3:
        print "*** invalid number of arguments"
    else:
        tool, action, obj = args
 # Do the rest of your code here