โมดูล cmd มีเพียงหนึ่งคลาสที่เรียกว่า Cmd ใช้เป็นคลาสพื้นฐานสำหรับเฟรมเวิร์กที่ผู้ใช้กำหนดสำหรับล่ามบรรทัดคำสั่งเชิงบรรทัด
คำสั่ง
อ็อบเจ็กต์ของคลาสนี้หรือคลาสย่อยของคลาสนี้จัดเตรียมเฟรมเวิร์กสำหรับล่ามตามบรรทัด วิธีการสำคัญของคลาสนี้ที่สืบทอดโดยคลาสย่อยมีดังต่อไปนี้
cmdloop()
เมธอดนี้ส่งอ็อบเจ็กต์แบบวนซ้ำ รับอินพุต และส่งแบบเดียวกันไปยังเมธอดตัวจัดการคำสั่งที่เหมาะสมในคลาส
เมื่อการวนซ้ำเริ่มต้น ข้อความแนะนำ (กำหนดให้เป็นพารามิเตอร์สำหรับเมธอด cmdloop()) จะแสดงขึ้นพร้อมกับพรอมต์เริ่มต้น (cmd) ซึ่งอาจปรับแต่งโดยแอตทริบิวต์พรอมต์
วัตถุล่ามรู้จักการป้อนข้อมูลของผู้ใช้ในสองส่วน ส่วนแรกนำหน้าด้วย 'do_' ถือเป็นเมธอดในคลาสและส่วนที่สองเป็นพารามิเตอร์ของเมธอด ตัวอย่างเช่น หากผู้ใช้ป้อน 'hello Python' ล่ามจะพยายามรันเมธอด do_hello() ในคลาสที่ส่ง 'Python' เป็นพารามิเตอร์ หากมีการกำหนดวิธีการดังกล่าว จะดำเนินการ มิฉะนั้น ข้อความแสดงข้อผิดพลาดจะแสดงขึ้น
คลาสย่อยของ Cmd สืบทอดเมธอด do_help() อินพุตของผู้ใช้ เช่น 'help hello' จะดึง docstring ในเมธอด hello() และแสดงเป็นข้อความช่วยเหลือ หรือหากมีเมธอด help_hello() จะถูกเรียกใช้
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการประยุกต์ใช้กรอบงานล่ามเชิงบรรทัด รหัสจะนำเข้าโมดูล cmd ก่อนและกำหนดคลาสย่อยของคลาส Cmd
คลาส MathOps กำหนดวิธีการ add, sub, mul และ div (ทั้งหมดนำหน้าด้วยอักขระ do_) ด้วยข้อความ docstring
วัตถุของคลาส MathOps ถูกประกาศและส่งไปยังลูปโดยเรียกเมธอด cmdloop() เมื่อผู้ใช้พิมพ์ช่วยเหลือหน้าพรอมต์ ชื่อเมธอดทั้งหมดจะแสดงขึ้น เมื่อพิมพ์ชื่อของเมธอดด้วยความช่วยเหลือ docstring ของเมธอดนั้นจะแสดงขึ้น หากต้องการเรียกใช้เมธอดใดๆ ให้พิมพ์ชื่อ อาร์กิวเมนต์ที่ต้องการ แล้วกด Enter ผลลัพธ์ของวิธีการจะปรากฏขึ้นและข้อความแจ้งจะกลับมาซ้ำ ๆ จนกว่า ^D จะออกเพื่อหยุดการวนซ้ำ
from cmd import Cmd class MathOps(Cmd): def do_add(self, args): '''add two numbers''' num=args.split() print ('addition:',int(num[0])+int(num[1])) def do_sub(self, args): '''subtract two numbers''' num=args.split() print ('subtraction:',int(num[0])-int(num[1])) def do_mul(self, args): '''multiply two numbers''' num=args.split() print ('multiplication:',int(num[0])*int(num[1])) def do_div(self, args): '''perform division''' num=args.split() print ('division:',int(num[0])/int(num[1])) def do_EOF(self, args): return True op=MathOps() op.prompt= "->" op.cmdloop("loop starts. Press ^D to exit")
ตัวอย่างการรันสคริปต์ด้านบนแสดงอยู่ด้านล่าง
loop starts. Press ^D to exit ->help Documented commands (type help ): ======================================== add div help mul sub Undocumented commands: ====================== EOF ->help add add two numbers ->add 5 7 addition: 12 ->div 10 5 division: 2.0 -> >>>