2017-04-27 112 views
0

我正面臨一個奇怪的問題。python3上的隨機AttibuteError

我改變了一塊python2我不得不python3使用2to3。

在此之後,我的代碼是隨機運行/失敗...... 我得到,當它出現故障,但在python2和隨機python3試驗它的工作原理是關係到一個屬性錯誤... 的錯誤,並找到屬性...

我在2臺機器上測試了這種行爲,運行了python3.4。

你有什麼錯誤的線索嗎(我對這個「隨機」失敗感到困惑)?

這裏是跟蹤我得到:

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

既不是代碼也不是錯誤消息 - 這是占卜者的工作。 –

+0

我很抱歉,我正在嘗試隔離一個測試用例,涉及的代碼非常大。我得到的錯誤信息是(簡短版本,請參閱我的文章後的完整版本編輯:... if(self.bitWidth <= 0 or self.bitWidth > self.parent_reg.size()): 文件「tools/ciregs.py」,行1326,大小爲 返回self.parent_module_.width AttributeError:'模塊'對象沒有屬性'寬度' – user1654361

回答

0

好吧,謝謝你的幫助,@Bryan Oakley,你的幫助對我有幫助。

最後問題是我從我加載的json中獲取密鑰,並且加載是在字典而不是已排序的字典上完成的。

我的關鍵之一是json中的最後一個,然後調用期望設置其他鍵(報告的錯誤中的寬度)的函數。

讓詞典未排序使得在某些情況下在設置最後一個鍵之前設置寬度鍵,而在某些情況下不設置寬度鍵。

我仍然不解,爲什麼它的工作對python2 ....

感謝所有您的幫助!