2 回答

TA贡献1853条经验 获得超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贡献1818条经验 获得超7个赞
Python 文档说:
copy(x) 返回 x 的浅拷贝。
浅拷贝构造一个新的复合对象,然后(在可能的范围内)向其中插入对原始对象中的对象的引用。
尝试使用 copy.deepcopy(x) 代替。
uvcomsAntSup = copy.deepcopy(uvcomsSup)
copy.deepcopy(x) 返回 x 的深层副本。
深层复制构造一个新的复合对象,然后递归地将原始对象中的对象的副本插入其中。
阅读更多相关信息:https : //docs.python.org/3.7/library/copy.html
添加回答
举报