我正在编写一个使用Queue
作为复合属性的自定义list
类。我不从列表中升级。我的代码在这里。我得到了我在下面粘贴的深度复印错误。有人可以帮我解决我的错误吗?感谢
from iterator import Iterator
class Abstractstruc(object):
def __init__(self):
assert False
def __str__(self):
return "<%s: %s>" %(self.__class__.__name__,self.container)
class Queue(Abstractstruc,Iterator):
def __init__(self,value=[]):
self.container=[]
self.size=0
self.concat(value)
def add(self, data):
self.container.append(data)
def remove(self):
self.container.pop(0)
def peek(self):
return self.container[0]
def __getitem__(self,index):
return self.container[index]
def __iter__(self):
return Iterator(self.container)
def concat(self,value):
for i in value:
self.add(i)
def __bool__(self):
return len(self.container)>0
def __len__(self):
return len(self.container)
def __deepcopy__(self,memo):
return Queue(copy.deepcopy(self.container,memo))
if __name__=='__main__':
q3=Queue()
li=[1,2,3]
q3.add(li)
print q3
print len(q3)
q4=copy.deepcopy(q3)
q3.peek()[0]=100
print "after modifying"
print q3
print "q4 = ", q4
输出:
<Queue: [[1, 2, 3]]>
1
Traceback (most recent call last):
File "test.py", line 56, in <module>
q4=copy.deepcopy(q3)
NameError: name 'copy' is not defined
答案 0 :(得分:8)
您需要导入copy
module:
import copy
错误消息:
Traceback (most recent call last):
File "test.py", line 56, in <module>
q4=copy.deepcopy(q3)
NameError: name 'copy' is not defined
当Python不知道名字NameError
所指的内容时,会引发 copy
。