亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創建獨立對象

如何創建獨立對象

慕哥6287543 2022-01-05 20:29:54
我創建的兩個對象有問題。我有一個獲取一些數據的循環。我將這些數據保存在一個對象中,并且在每個循環中我想查看我的數據是否已更改。如果是真的,我會將數據保存在日志中。問題是,當我刷新 actVar 時,我的 prevVar 也發生了變化。這是我的代碼:我嘗試使用 copy() 函數但沒有成功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.copy(uvcomsSup)                                  logFile.addSupportData(str(uvcomsSup))           sleep(1)    except Exception as err:        print("Error inesperado:", sys.exc_info()[0])        print(err)當我打印這兩個對象(我有一個eq方法和str方法)時,我看到了相同的值。我只是第一次進入 if 條件。有什么幫助嗎?
查看完整描述

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)


查看完整回答
反對 回復 2022-01-05
?
qq_笑_17

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


查看完整回答
反對 回復 2022-01-05
  • 2 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號