python - 需要1个位置参数(给定2个)

时间:2014-03-07 08:13:14

标签: python cmd

当我在python输入框中调用inform时,它说我给了do_inform 2参数,但我只输入“inform”并单击“OK”。为什么说我提供两个论点?

import cmd

class DisplayWelcome(cmd.Cmd):
    """Welcome user to game"""

    def do_inform(self):
        k = input('Enter a letter')
        print (k)


def main():
    d = DisplayWelcome()
    #d.do_greet()
    d.do_inform()
    d.cmdloop()

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:1)

所有Cmd.do_*方法都传递给命令行的其余部分,即使是空的。

在命令提示符下键入inform时,该行的其余部分为空,因此Cmd会调用self.do_inform('')

始终为所有do_*方法提供该余数的参数;如果你愿意,你可以忽略它:

def do_inform(self, rest=None):
    k = input('Enter a letter')
    print (k)

cmd library documentation并没有说明这一点;在cmd.cmdloop()方法文档的顶部提到了:

  

反复发出提示,接受输入,解析收到的输入的初始前缀,并调度到操作方法,并将其余部分作为参数传递。