2017-04-27 10 views
0

私は奇妙な問題に直面しています。python3のランダムAttibuteError

私は2to3を使ってpython3に変更したpython2を変更しました。

この後、私のコードはランダムに失敗/実行されている...それが失敗したときに私が手 エラーが属性エラーに関連している... しかしpython2で、それが動作するランダムのpython3の試験では、属性を見つけます...

私はpython3.4の両方を実行している2台のマシンでこの動作をテストしました。

何が起こっているのか分かりませんか(私はこの「ランダム」の失敗に困惑しています)?ここで

は私が手トレースです:

Traceback (most recent call last): 
File "tools/ciregs.py", line 1596, in <module> 
module = Module(json_data) 
File "tools/ciregs.py", line 1147, in \__init__ 
self.registers = [Register(json_reg, parent_module=self) for json_reg in json_module[key]] 
File "tools/ciregs.py", line 1147, in <listcomp> 
self.registers = [Register(json_reg, parent_module=self) for json_reg in json_module[key]] 
File "tools/ciregs.py", line 1260, in \__init__ 
self.fields = [Field(json_field, self) for json_field in json_reg[key]] 
File "tools/ciregs.py", line 1260, in <listcomp> 
self.fields = [Field(json_field, self) for json_field in json_reg[key]] 
File "tools/ciregs.py", line 1443, in \__init__ 
self.check()   
File "tools/ciregs.py", line 1453, in check 
if(self.bitWidth <= 0 or self.bitWidth > self.parent_reg.size()): 
File "tools/ciregs.py", line 1326, in size return self.parent_module_.width 
AttributeError: 'Module' object has no attribute 'width' 

私は「幅」キーが含まれている辞書を持っています。サブ要素では、そのサブ要素のサイズを上部の幅と比較して、適合するかどうかを調べる必要があります。

そのため、私はself.parent_reg.size()にアクセスしようとしましたが、その幅にアクセスすると、その属性の幅はトップレベル辞書には存在しません。

ありがとうございました!

+2

コードなしでは、難しいです! –

+3

どちらのコードでもエラーメッセージでもない - これはdivinerの仕事です。 –

+0

申し訳ありませんが、現在テストケースを分離しようとしていますが、そのコードはかなり大きいです。私が得たエラーメッセージは、(短いバージョンで、私のポストの完全版を参照してください編集:... ファイル "tools/ciregs.py"、行1453、チェック中 if(self.bitWidth <= 0またはself.bitWidth > self.parent_reg.size()):サイズは ファイル "ツール/ ciregs.py"、ライン1326、 リターンはAttributeError self.parent_module_.width: 'モジュール' オブジェクトが属性 '幅' – user1654361

答えて

0

あなたのおかげで、@ブライアンオークリー、あなたの助けが私を助けました。

最終的に問題は、私がロードするjsonからキーを取得し、読み込みが辞書で行われ、ソートされた辞書ではないことです。

私のキーの1つがjsonで最後に、他のキー(エラーの報告された幅)が設定されることを期待する関数を呼び出します。

辞書をソートしないと、最終キーの設定前に幅キーが設定されることがありますが、それ以外の場合は設定されません。すべてのあなたの助けを

それはpython2のために働いて、なぜ私はまだ困惑しています

....

ありがとう!