IT序号网

python 深浅拷贝今天用上了

shasha 2021年05月26日 编程语言 284 0
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值就不是最初的那个值了。
故需要深拷贝,将所有的值重新赋值给一个变量,也就是在新的地址赋值。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!