>我从一个类堆栈创建了 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_stack
与stack1
完全相同,反之亦然。
is
关键字检查两个值的标识是否相同,这是通过内存地址实现的。制作(深层(副本将在新的内存地址中创建副本,这就是stack1 is deepcopy(stack1)
返回False
的原因。