我正在使用第三方的一個很好的小python模塊,而且我碰到了一點讓我的大腦都扭曲了,而且我最關心的是數據完整性。從方法返回自我.__ dict__
快速總結:有,大約去爲這樣一類方法:
def as_dict(self):
##adjust some attributes that don't make sense outside this scope
##... ... ...
return self.__dict__
我手動使用這種方法的結果,但也有在那裏我將它傳遞了幾個地方,和我有不知道這些函數實際上對返回的字典做了什麼。
現在,這是安全的,還是可能有一些流浪的功能開始搞亂我的實例屬性?我原本以爲'自我'以某種方式保護了數據集,並且我傳遞了數據的副本,但是現在我想知道是否會傳遞實例內存的引用? (有內嵌套mutables)
我應該做的,而不是:return copy.deepcopy(self.__dict__)
您是否測試過您在代碼中描述的行爲? – sean
我還沒有,而且在這一點上我完全無法做到這一點。我想在編輯這個函數的時候會提出一些警告,因爲這看起來像是一個等待發生的問題。自我.__ dict__以任何方式特別對待,還是僅僅是一本字典? – user2097818