2012-05-02 12 views
1

私はPythonモジュールを持っています。これには、通常の関数定義とクラスが含まれています。何らかの理由でコンストラクタを呼び出して値を渡すと、クラス変数が更新されません。Pythonモジュール内でクラスを宣言する

私のモジュールはVODControl(VODControl.py)と呼ばれています。私がモジュール内で宣言したクラスはDRMPathと呼ばれます。 DRMPathクラスには、ログファイルと結果の2つのインスタンスvairablesがあります。 logfileは文字列で、結果は辞書です。

私のコンストラクタは次のようになります。私は私が私の他のPythonスクリプトからインポートするとき

def __init__(self, file): 
    self.logilfe = file 
    self.results['GbE1'] = "" 
    self.results['GbE2'] = "" 
    self.results['NetCrypt'] = "" 
    self.results['QAM'] = "" 

import VODControl 

私が使用して呼び出しは以下の通りです:

d = VODControl.DRMPath('/tmp/adk.log') 

しかし、logfileインスタンス変数の値を出力すると、コンストラクタに渡したもので更新されません:

print d.logfile 

印刷後、それでも空の文字列です。何がありますか?

+4

「logilfe」の入力ミスですか? – ChristopheD

+0

現在、[builtinファイルタイプ](http://docs.python.org/library/stdtypes.html#file-objects)をシャドーイングしているので、 'file'パラメータを' fname'などにリネームすることをお勧めします。 – Glider

+0

+1正確な*コードを投稿するために+1します。これにはlogilfeのタイプミスが含まれます。あまりにも多くのポスターは、書き込むことを意味するスニペットを挿入しますが、キーのタイプミスやその他のboo-booは省略します。 – PaulMcG

答えて

2

self.logilfe = fileは、self.logfile = fileと同じではありません。さらに、空の文字列ではなくNoneを返す可能性があります。

+0

まあ、私は巨大なジャックのような気がしません。時には、目の第二のセットが必要な場合もあります。私の同僚の代わりにStackOverflowを持っている神々に感謝し、私の前で自分をばかにする。ありがとうございます、間違っていたのはそれでした... – slappyjam

関連する問題