繁体   English   中英

Python - AttributeError: 'function' 对象没有属性 'deepcopy'

[英]Python - AttributeError: 'function' object has no attribute 'deepcopy'

我有一个可变对象列表,它是类的一个属性。

self.matriceCaracteristiques

我想保留它的副本,以便对象在执行过程中会像原始列表一样发生变化,而不是它们在列表中的顺序(这是我想要在执行后保留和“恢复”的内容)。

copy_of_matCar = self.matriceCaracteristiques[:] #to preserve the order of the objects 
#that will be changed during execution

当需要恢复列表时,我尝试这样做:

self.matriceCaracteristiques = copy_of_matCar[:]

但它不起作用,因为尽管copy_of_matCar具有不同的顺序(特别是该属性在某些代码执行之前具有的顺序),但另一个self.matriceCaracteristiques尽管指令保持完全相同。 所以我想通过遵循 Python 参考来制作它的深层副本:

import copy
self.matriceCaracteristiques = copy.deepcopy(copy_of_matCar)

但是,我得到的是以下错误:

  self.matriceCaracteristiques = copy.deepcopy(copy_of_matCar)
AttributeError: 'function' object has no attribute 'deepcopy'

知道如何解决这个问题并获得要分配给self.matriceCaracteristiques的列表copy_of_matCarself.matriceCaracteristiques吗?

我面临同样的问题,并尝试了很多方法。 以下方式解决了我的问题:改变

import copy
dict = {...}
copy.deepcopy()

from copy import deepcopy
dict = {...}
deepcopy()

注释中建议的是问题的根源:导入copy模块 ,模块中会出现阴影copy

例如,考虑以下模块:

# In some_module_1.py
from copy import copy


# In some_module_2.py
import copy
# `copy` refers to the module, as expected
print('deepcopy' in dir(copy))  # True

from some_module_1 import *
# `copy` got shadowed, it is now actually referring to `copy.copy`
print('deepcopy' in dir(copy))  # False

因为我从some_module_1导入了所有内容, some_module_1我还导入了我在那里导入的函数copy 这意味着它现在阴影模块copy导入上面的4行。 因此python正确地抱怨deepcopy不是函数copy.copy的属性,因此错误

AttributeError: 'function' object has no attribute 'deepcopy'

请在您的代码中找到其他复制模块。 例如, ...

from numpy.lib.function_base import copy

请删除其他复制模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM