[英]Python - AttributeError: 'function' object has no attribute 'rank'
[英]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_matCar
的self.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.