Python3 deepcopy class 实例不工作
Python3 deepcopy class instance doesn't work
我从 class 堆栈创建了 2 个 class 实例(stack0、stack1)
在class Stack中有一个名为class的变量,它有另一个堆栈地址(参考),即)stack0.other_stack是stack1,stack1.other_stack是stack0。
但是虽然我使用了 deepcopy 函数,但它并没有像我预期的那样工作。
我尝试制作一个 class 函数来深度复制 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)
returns False
.
我从 class 堆栈创建了 2 个 class 实例(stack0、stack1) 在class Stack中有一个名为class的变量,它有另一个堆栈地址(参考),即)stack0.other_stack是stack1,stack1.other_stack是stack0。 但是虽然我使用了 deepcopy 函数,但它并没有像我预期的那样工作。
我尝试制作一个 class 函数来深度复制 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)
returns False
.