0

telnet/pexpect を介してセンサーにログインし、データ コレクターとして機能する機能があります。

ログインし、データを取得し、そこから関連する出力を解析する部分 (pexpect) を書き直したくありません。ただし、このコードとそれが収集するデータで別のことを行う必要があります

たとえば、次のことが必要になる場合があります。

  • 最初の読み値が返るまでの時間

  • さまざまな数のセンサー読み取り値の平均を取る

  • ステータス (1 つのデータ) を返すか、出力からセンサーの読み取り値 (別のデータ) を返します。

最終的には、同じようにログインして出力を解析する必要があり、その部分に 1 つのコード ブロックを使用したいと考えています。

コードの上位では、瞬時に使用されています。それを呼び出すと、収集する必要があるデータの種類がわかり、それだけです。オブジェクトの構築はあまりにも不器用です。

私の使用法は、単一の関数に引数を追加するよりも優れています。

何か案は?

4

2 に答える 2

3

これは非常によくある状況ですが、他の人がしていることをあなたがまだしていないことに驚いています。

関数をリファクタリングして、より小さな関数に分解します。

関数はオブジェクトであり、引数として他の関数に渡すことができます。

def step1(): 
    whatever

def step2(): 
    whatever

def step2_alternative():
    whatever

def original( args ):
    step1()
    step2()

def revised( args, step2_choice ):
    step1()
    step2_choice()

これで実行できます。

revised( step2 )
revised( step2_alternative )

関数オブジェクトを使用したOOプログラミングです。

于 2011-05-13T10:11:33.860 に答える
0

引数として記述した関数に、データ処理関数を渡していただけますか?

あなたの好みに応じて、多かれ少なかれエレガントになるかもしれません. (すみません: 私は pexpect について何も知りません。あなたの質問を誤解しているかもしれません!)

于 2011-05-13T03:27:48.787 に答える