2014-03-07 105 views
1

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

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() 
+0

你的意思是你在'cmdloop()'提示的命令提示符下输入'inform'? –

+0

'd'正在通过作为参数 – Gogo

+0

我想我有一个愚蠢的时刻。当你不提供一个空字符串作为参数时,它会传递一个空字符串,对吗? – user3164083

回答

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()方法文档的顶部提到:

反复发出提示,接受输入,解析初始前缀断所接收的输入,并调度向动作方法,使它们的线的剩余部分作为参数。

+0

我明白了,谢谢:) – user3164083

相关问题