2010-12-17 6 views
0

私のクラスで変数を呼び出す際に問題が発生しています。私はすべてが自己のものとしてセットアップされていますが、私はまだエラーが発生しています。私はこれを考え出すのが苦労していると思います。なぜなら私は3.0スクリプティングに慣れていないからです。私は彼らはそれがこれを取得自己/クラス内のグローバル名ですか?

をself.rawかself.input_host作る場合

command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(raw, input_host) 
NameError: global name 'raw' is not defined 

ここhttp://pastebin.com/9Lrw399E

がエラーである:ここでは

は私のスクリプトです

command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(self.raw, self.input_host) 
AttributeError: 'MainLoop' object has no attribute 'raw' 
+3

コードに外部サイトを使用しないようにして、関連するすべての部分を質問に含めることはできますか? –

+0

あなたの質問を更新して、あなたが受け入れた答えがあなたの最後に質問してもうまくいきません。 – martineau

答えて

4
command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(raw, input_host) 

は次のようになります。

command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(self.raw, self.input_host) 

selfに注意してください。あなたは生の合格および関数のパラメータとしてinput_hostしている場合を除き

+0

私はこのエラーを受け取ります: コマンド= 'tcpdump -c5 -tttt -w {0}ホスト{1}'フォーマット(self.raw、self.input_host) AttributeError: 'MainLoop'オブジェクトには'raw'という属性はありません。 –

+0

+1がトリガーで最速になり、 'input_host'をキャッチします。ファイル名を入力しないと、フォーマットコマンドは変数を初めて参照します。 –

+0

@Pastelinuxこれは、あなたが 'inputname'に値を割り当てただけなので、' raw ' – unholysampler

1

command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(self.raw, self.input_host) 

を試してみてください、あなたはクラスインスタンスの変数をルックアップするためにself.variableを使用する必要があります。

編集:このコード行が実行される前に、self.rawとself.input_hostを定義する関数が呼び出されていることを確認する必要もあります。あなたがMainLoop.cmd()を呼び出す場合、コードから、あなたはself.rawself.input_hostは、クラスのインスタンスに存在するようにMainLoop.host()MainLoop.inputname()cmd()前に呼び出す必要があります。この場合

、あなたはおそらく、少なくともインスタンス変数
class MainLoop: 
    def __init__(self): 
     self.raw = None 
     self.input_host = None 

を作成し、コマンドを作成する前にself.rawとself.input_hostの値をチェックし、あなたのクラスのコンストラクタを作成する必要があります。

def cmd(self): 
    if self.raw is not None and self.input_host is not None: 
     command = 'tcpdump -c5 -tttt -w {0} host {1}'.format(self.raw, self.input_host) 
     subprocess.call(command.split(), shell=False) 
+0

はまだ私にエラーを与える –

+0

あなたは何を言っているか分かります。私がそれを理解できるかどうかを見てみましょう。私は私が戻ってきたときに報告します。 –

関連する問題