分类: Python/Ruby
2009-10-16 17:09:52
今天看 gadfly 的源碼時,看到一段代碼:
|
很好奇,遂搜索相關信息。
類cmd.cmdloop 中執行流程如下:
cmdloop()
|
|
|-- [VF]preloop()
|-- while not stop:
|
|-- read line
|-- [VF]precmd() #命令执行过前的操作可以放在这里
|-- onecmd()
|-- [VF]postcmd() #命令执行过后的操作可以填在这
|-- postloop() #循环结束后执行的操作可以添加到这
Note: [VF] - virtual member function
運行時,接收用戶輸入格式為:
命令 + 字符串
命令: 由 a-z, A-Z, 0-9 及 下劃綫 構成
其中
a. 如果命令為?:
執行 do_help 函數, 相當與 do_help 的快捷方式
b. 如果命令為! :
如果定義了 do_shell, 則執行 do_shell函數, 有點像 do_shell 的快捷方式 :)
c. 如果不輸入命令直接按回車:
不輸入信息, 直接按回車, 執行 self.emptyline(), 默認為重複上一條命令。如果不想這樣,需要重定義 emptyline()
d. 程序的命令提示符默認為 :(Cmd),如果你想改變,請重置類中成員變量 prompt
e. 程序中定義一個命令很簡單,定義一個函數即可.
函數格式:
|
如果函數返回了一個 not false 的值, 則程序會退出!
我寫的測試程序:
|