Python3 深层复制类实例不起作用



>我从一个类堆栈创建了 2 个类实例(stack0、stack1( 在类 Stack 中有一个命名的类变量,它具有另一个堆栈地址(引用(,即stack0.other_stack是 stack1,stack1.other_stack是 stack0。 但是尽管我使用了深度复制功能,但它并没有按我的预期工作。

我尝试制作一个深度复制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_stackstack1完全相同,反之亦然。

is关键字检查两个值的标识是否相同,这是通过内存地址实现的。制作(深层(副本将在新的内存地址中创建副本,这就是stack1 is deepcopy(stack1)返回False的原因。

相关内容

  • 没有找到相关文章