python 深浅拷贝今天用上了
原创
©著作权归作者所有:来自51CTO博客作者那时一个人的原创作品,请联系作者获取转载授权,否则将追究法律责任
class A(object):
def __init__(self):
self.permission_type_dict = {'a': 1, 'b': 2}
@property
def get_dict(self):
return dict(a=1, b=2)
def func(self):
import copy
permission_type_dict = copy.deepcopy(self.permission_type_dict)
print(permission_type_dict)
for permission in set(list_permission):
if permission in permission_type_dict.keys():
permission_type_dict.pop(permission)
return permission_type_dict
if __name__ == '__main__':
res = A().get_dict
print(res)
说明:
我遇到的问题是在网络请求时,调用方法func,每次调用都会删除字典permission_type_dict
的某些元素。
如果使用浅拷贝,变量permission_type_dict
获取的是self.permission_type_dict
的地址,当对permission_type_dict
操作时会直接影响self.permission_type_dict
,那么当第二次调用这个方法时,取到的self.permission_type_dict
值就不是最初的那个值了。
故需要深拷贝,将所有的值重新赋值给一个变量,也就是在新的地址赋值。
懂得,原来世界如此简单!