我在Python中使用了下面的堆栈类来存储另一个类的对象。你知道吗
class Stack :
def __init__(self) :
self.items = []
def push(self, item) :
self.items.append(item)
def pop(self) :
return self.items.pop()
def isEmpty(self) :
return (self.items == [])
scopeStack=Stack();
object1=AnotherClass();
object1.value=2;
scopeStack.push(object1);
在堆栈外更改object1对象的内容时,堆栈对象的内容也会更改。你知道吗
object1.value=3;
obj=scopeStack.pop();
print obj.value; #gives output 3
我应该怎么做才能在局部变量和堆栈的内部变量之间没有这种动态绑定呢?你知道吗
如果需要对象的副本,则需要复制或深度复制对象。看看^{} 模块。你知道吗
它不是动态绑定,只是对同一对象的多个引用。执行
scopeStack.push(object1)
操作时,将该对象推送到堆栈上的不是对象的名称或对象的内容,而是对象本身。如果您稍后修改该对象,它的修改将显示在引用它的任何地方。你知道吗如果希望堆栈上的版本是独立的,那么需要制作一个副本并推送副本。您可以尝试为此使用
copy
模块,但如果您的对象是自定义类的实例,则可能需要为该类编写自己的复制机制。Python不能自动知道如何复制您创建的任何自定义类的实例。你知道吗查看找到的
copy
模块here。你要找的是copy.deepcopy()
。你知道吗示例:
输出:
相关问题 更多 >
编程相关推荐