我有一个可变对象列表,它是一个类的属性。
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'
知道如何解决此问题,并对要分配给copy_of_matCar
的列表self.matriceCaracteristiques
进行深度复制吗?
答案 0 :(得分:7)
我面临同样的问题,并尝试了很多方法。 以下方法解决了我的问题: 改变
import copy
dict = {...}
copy.deepcopy()
到
from copy import deepcopy
dict = {...}
deepcopy()
答案 1 :(得分:1)
评论中建议的是问题的根源:模块中有services.AddIdentity<Usuarios, IdentityRole>(options =>
{
if (usersConfiguration.PasswordLongitud.HasValue)
options.Password.RequiredLength = usersConfiguration.PasswordLongitud.Value;
if (usersConfiguration.CantidadIntentosLogin.HasValue)
options.Lockout.MaxFailedAccessAttempts = usersConfiguration.CantidadIntentosLogin.Value;
options.Password.RequireLowercase = usersConfiguration.PasswordRequiereMinusculas;
options.Password.RequireUppercase = usersConfiguration.PasswordRequiereMayusculas;
options.Password.RequireNonAlphanumeric = usersConfiguration.PasswordRequiereCaracteresRaros;
options.Password.RequireDigit = usersConfiguration.PasswordRequiereNumeros;
options.SignIn.RequireConfirmedEmail = usersConfiguration.UsuarioRequiereConfirmacionMail;
})
的阴影, 导入{{1>模块。
例如考虑以下模块:
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
。这意味着它现在隐藏了导入上面4行的模块some_module_1
。因此python正确地抱怨copy
不是函数copy
的属性,因此错误
deepcopy