Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでの行指向のコマンドインタープリターのサポート


cmdモジュールには、Cmdと呼ばれるクラスが1つだけ含まれています。これは、行指向のコマンドラインインタープリター用のユーザー定義フレームワークの基本クラスとして使用されます。

Cmd

このクラスまたはそのサブクラスのオブジェクトは、行指向のインタープリターフレームワークを提供します。サブクラスに継承されるこのクラスの重要なメソッドを以下に示します。

cmdloop()

このメソッドは、オブジェクトをループで送信し、入力を受け入れて、クラス内の適切なコマンドハンドラーメソッドに同じものを送信します。

ループが開始されると、紹介メッセージ(cmdloop()メソッドにパラメーターとして指定)がデフォルトの(cmd)プロンプトとともに表示されます。これは、prompt属性によってカスタマイズできます。

インタプリタオブジェクトは、2つの部分でユーザー入力を認識します。接頭辞「do_」が付いた最初の部分はクラスのメソッドとして扱われ、2番目の部分はメソッドのパラメーターとして扱われます。たとえば、ユーザーが「hello Python」と入力すると、インタプリタは「Python」をパラメータとして送信するクラスでdo_hello()メソッドを実行しようとします。上記のメソッドが定義されている場合は実行され、そうでない場合はエラーメッセージが表示されます。

Cmdのサブクラスはdo_help()メソッドを継承します。 「helphello」などのユーザーの入力により、hello()メソッドでdocstringがフェッチされ、ヘルプテキストとして表示されます。存在する場合は、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
->
>>>

  1. 複素数オブジェクトのクラスを定義するPythonプログラム

    次の演算で複素数クラスを定義することにより、複素数タスクを実行するとします- add()を使用して2つの複素数を追加します sub()で2つの複素数を減算します mul()を使用して2つの複素数を乗算します div()を使用して2つの複素数を除算します 複素数の絶対値を取得するmod() 複素数は(a + bi)の形式で表示されます。 2つの複素数があり、それらに対してこれらの操作を実行します。クラス内で、add()、sub()、mul()、およびdiv()メソッドをオーバーロードして、演算子を使用して操作を実行できるようにします。また、__ str __()メソッドをオーバーロ

  2. PythonでTkinterボタンのコマンドメソッドを変更する

    Buttonウィジェットの重要性は、アプリケーションで特定の操作を実行するためのイベントを処理するために使用されることです。このようなイベントを処理するために、通常、特定の操作を含むメソッドを定義します。 イベントを変更したいとします。 ボタンを初期化した後のメソッド。 configure(options)を使用して、ボタンとそのハンドラーを構成できます。 方法。したがって、新しいメソッドを定義してボタンを構成することで、同じボタンで新しいイベントをトリガーできます。 例 #Import tkinter library from tkinter import * #Create an i