Computer >> Máy Tính >  >> Lập trình >> Python

Hỗ trợ trình thông dịch lệnh hướng dòng bằng Python

Mô-đun cmd chỉ chứa một lớp được gọi là Cmd. Điều này được sử dụng làm lớp cơ sở cho khung do người dùng xác định cho trình thông dịch dòng lệnh hướng dòng.

Cmd

Một đối tượng của lớp này hoặc lớp con của nó cung cấp khung thông dịch hướng dòng. Các phương thức quan trọng của lớp này được lớp con kế thừa được liệt kê bên dưới.

cmdloop ()

Phương thức này gửi đối tượng trong một vòng lặp, chấp nhận đầu vào và gửi đối tượng tương tự đến phương thức xử lý lệnh thích hợp trong lớp.

Khi vòng lặp bắt đầu, một thông báo giới thiệu (cung cấp dưới dạng tham số cho phương thức cmdloop ()) sẽ được hiển thị với lời nhắc (cmd) mặc định có thể được tùy chỉnh bằng thuộc tính nhắc.

Đối tượng thông dịch nhận dạng đầu vào của người dùng trong hai phần. Phần đầu tiên có tiền tố là ‘do_’ được coi là phương thức trong lớp và phần thứ hai là tham số của phương thức. Ví dụ:nếu người dùng nhập ‘hello Python’, trình thông dịch sẽ cố gắng thực thi phương thức do_hello () trong lớp gửi ‘Python’ dưới dạng tham số. Nếu phương thức đã nói được xác định, nó sẽ được thực thi, nếu không, thông báo lỗi sẽ được hiển thị.

Lớp con của Cmd kế thừa phương thức do_help (). Đầu vào của người dùng, chẳng hạn như "help hello" sẽ tìm nạp chuỗi doc trong phương thức hello () và hiển thị nó dưới dạng văn bản trợ giúp hoặc nếu có, phương thức help_hello () sẽ được chạy.

Ví dụ sau minh họa ứng dụng của khung thông dịch hướng dòng. Đầu tiên, mã nhập mô-đun cmd và xác định một lớp con của lớp Cmd.

Lớp MathOps xác định các phương thức add, sub, mul và div (tất cả đều có tiền tố là ký tự do_) với văn bản docstring.

Đối tượng của lớp MathOps được khai báo và gửi vào một vòng lặp bằng cách gọi phương thức cmdloop (). Khi người dùng gõ trợ giúp trước lời nhắc, tất cả các tên phương thức sẽ được hiển thị. Khi tên của một phương thức có trợ giúp được nhập, chuỗi tài liệu của phương thức tương ứng sẽ được hiển thị. Để gọi bất kỳ phương thức nào, hãy nhập tên của nó, các đối số bắt buộc và nhấn Enter. Kết quả của phương pháp sẽ được hiển thị và lời nhắc sẽ quay lại nhiều lần cho đến khi ^ D được đưa ra để dừng vòng lặp.

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")

Mẫu chạy tập lệnh trên được hiển thị bên dưới

Vòng lặp
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
->
>>>