2 回答

TA貢獻(xiàn)1853條經(jīng)驗 獲得超6個贊
我無法運行你的代碼,所以我看不到全貌。
不過,我可以看到你正在返回淺拷貝的ucomsSup,它保留從而原來的對象修改它的引用。
嘗試改用深拷貝。
uvcomsSup = UVCEComsCtrl_SupportData()
uvcomsAntSup = UVCEComsCtrl_SupportData()
while 1:
try:
uvcomsSup = getUVComsSupport(OrigAddress, UVComsDestAddress)
print(uvcomsSup)
print("________________________")
print(uvcomsAntSup)
print(uvcomsSup is uvcomsAntSup)
if (uvcomsSup != uvcomsAntSup):
uvcomsAntSup = copy.deepcopy(uvcomsSup) ## Create deep copy
logFile.addSupportData(str(uvcomsSup))
sleep(1)
except Exception as err:
print("Error inesperado:", sys.exc_info()[0])
print(err)

TA貢獻(xiàn)1818條經(jīng)驗 獲得超7個贊
Python 文檔說:
copy(x) 返回 x 的淺拷貝。
淺拷貝構(gòu)造一個新的復(fù)合對象,然后(在可能的范圍內(nèi))向其中插入對原始對象中的對象的引用。
嘗試使用 copy.deepcopy(x) 代替。
uvcomsAntSup = copy.deepcopy(uvcomsSup)
copy.deepcopy(x) 返回 x 的深層副本。
深層復(fù)制構(gòu)造一個新的復(fù)合對象,然后遞歸地將原始對象中的對象的副本插入其中。
閱讀更多相關(guān)信息:https : //docs.python.org/3.7/library/copy.html
添加回答
舉報