我正在使用来自第三方的一个不错的小 python 模块,我遇到了一个让我的大脑完全扭曲的问题,我最关心的是数据完整性。
快速总结:有一个类方法大致如下:
def as_dict(self):
##adjust some attributes that don't make sense outside this scope
##... ... ...
return self.__dict__
我手动使用了这个方法的结果,但是有几个地方我传递了它,我不知道这些函数实际上对返回的字典做了什么。
现在,这是安全的,还是一些杂散的函数开始弄乱我的实例属性?我最初认为“自我”以某种方式保护了数据集,并且我正在传递数据的副本,但现在我想知道我是否正在传递对实例内存的引用?(里面有嵌套的可变对象)
我应该这样做:return copy.deepcopy(self.__dict__)