14.5.2 命令参数
下面这个例子做了一些改进来消除存在的一些问题,并为greet命令增加帮助。
import cmd
class HelloWorld(cmd.Cmd):
def do_greet(self,person):
"""greet [person]
Greet the named person"""
if person:
print("hi,",person)
else:
print('hi')
def do_EOF(self,line):
return True
def postloop(self):
print()
if __name__ == '__main__':
HelloWorld().cmdloop()
增加到do_greet()的docstring会成为这个命令的帮助文本。
输出显示了greet的一个可选参数person。尽管这个参数对命令来说是可选的,但是命令和回调方法之间有一个区别。方法总算有参数,不过有时这个值是一个空串。要由命令处理器负责确定空参数是否合法,或者是否要对命令做进一步的解析和处理。在这个例子中,如果提供了一个人名,那么便会提供个性化的欢迎词。
不论用户是否指定参数,传递到命令处理器的值都不会包含命令本身。这会简化命令处理器中的解析,特别是如果需要多个参数。