python 深浅拷贝今天用上了

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值就不是最初的那个值了。
故需要深拷贝,将所有的值重新赋值给一个变量,也就是在新的地址赋值。

原文地址:https://www.cnblogs.com/qianxunman/p/13637526.html