Python Cmd Shell未定义命令处理:default()方法编写疑问
解决你的Cmd.default()方法问题
我一眼就看到问题啦——你的default()方法漏掉了实例方法必须的self参数!而且还没接收line参数(这个参数会传入用户输入的完整未知命令内容),这两个问题都会导致方法无法正常工作。
你原来的代码:
import cmd class MyShell(cmd.Cmd): def default(): print('you entered this unknown command: ')
修正后的完整代码应该是这样:
import cmd class MyShell(cmd.Cmd): def default(self, line): # self是类实例方法的必填参数,line接收用户输入的未知命令内容 print(f'you entered this unknown command: {line}') # 可以加个测试入口 if __name__ == '__main__': MyShell().cmdloop()
关键说明:
- Python中类的实例方法第一个参数必须是
self(名字可自定义,但行业惯例用self),不然Cmd框架调用这个方法时,会因为参数不匹配抛出TypeError。 - 按照官方定义,
default()方法需要接收line参数,它会把用户输入的完整未知命令行内容传进来,这样你才能准确反馈用户输入的内容。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

