我需要一个动态大小的队列,所以我继承了list
和Iterable
,我测试了所有的内容,如追加,索引和迭代,但是有一个小问题。方法如
str(DataSet)返回一个空列表,并且Python调试器确实显示了一个空列表,这是预期的,因为我不会附加到列表parent而是内部数据。我需要覆盖哪些内容才能返回self
但返回self.data
?
class DataSet(collections.Iterable, list):
data = collections.deque()
index = 0
max = 3
def __add__(self, other):
self.append(other)
def append(self, item):
if len(self.data) >= self.max:
self.data.popleft()
self.data.append(item)
def __next__(self):
if self.index < len(self.data):
ret = self.data[self.index]
self.index += 1
return ret
raise StopIteration
def __getitem__(self, i):
return self.data[i]
def __iter__(self):
self.index = 0
return self
def setMax(self, max):
self.max = max
def __len__(self):
return len(self.data)
答案 0 :(得分:0)
覆盖
def __str__(self):
return str(self.data)