ログファイルの解析に適した構造を作成しようとしています。最初に辞書をクラスオブジェクトとして設定しようとしましたが、クラス属性にしたためうまくいきません。
現在、構造をセットアップするために次のことを試みています。
#!/usr/bin/python
class Test:
def __init__(self):
__tBin = {'80':0, '70':0, '60':0, '50':0,'40':0}
__pBin = {}
__results = list()
info = {'tBin' : __tBin.copy(),
'pBin' : __pBin.copy(),
'results': __results}
self.writeBuffer = list()
self.errorBuffer = list()
self.__tests = {'test1' : info.copy(),
'test2' : info.copy(),
'test3' : info.copy()}
def test(self):
self.__tests['test1']['tBin']['80'] += 1
self.__tests['test2']['tBin']['80'] += 1
self.__tests['test3']['tBin']['80'] += 1
print "test1: " + str(self.__tests['test1']['tBin']['80'])
print "test2: " + str(self.__tests['test2']['tBin']['80'])
print "test3: " + str(self.__tests['test3']['tBin']['80'])
Test().test()
ここでの目的は、2 つの辞書オブジェクト (__tBin と __pBin) を作成し、各テスト (つまり、test1 test2 test3...) に対してそれらのコピーを作成することです。ただし、test1、test2、および test3 は、明示的にコピーを作成しているように感じると、まだ同じ値を共有していることを経験しています。上記のコードには、私が達成しようとしていることをテストする方法も含まれています。
1, 1, 1 が印刷されることを期待していますが、3, 3, 3 が表示され、特に辞書で明示的に 'copy()' を実行すると、理由がわかりません。
私はPython 2.7.4を使用しています