Python3 Deepcopy类实例不起作用

sj602

我从一个Stack类创建了2个类实例(stack0,stack1)。在Stack类中有一个名为class的类变量,它具有另一个堆栈地址(引用),即stack0.other_stack是stack1,stack1.other_stack是stack0。但是,尽管我使用了Deepcopy函数,但它没有按我预期的那样工作。

我试图做一个类函数,可以深度复制other_stack。

stack0 = Stack(stack_list, arr_size//2, 0)
stack1 = Stack(stack_list, arr_size//2, 1)
stack0.other_stack = deepcopy(stack1)
stack1.other_stack = deepcopy(stack0)
print(stack0.other_stack is stack1)
print(id(stack0.other_stack), id(stack1))

print(stack0.other_stack is stack1) 印刷品: False

print(id(stack0.other_stack), id(stack1)) 印刷品: 4328836344 4328835224

我预期stack0.other_stack与完全相同,stack1反之亦然。

迪伦·戈德斯伯勒

is关键字检查两个值中的身份是相同的,这是通过存储器地址来实现。进行(深层)复制将在新的内存地址中创建一个副本,这就是为什么stack1 is deepcopy(stack1)return的原因False

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章