我需要使用什么方法来覆盖list子句以返回内部数据数组而不是自身?

时间:2017-04-09 14:19:33

标签: python

我需要一个动态大小的队列,所以我继承了listIterable,我测试了所有的内容,如追加,索引和迭代,但是有一个小问题。方法如 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)

enter image description here

1 个答案:

答案 0 :(得分:0)

覆盖

def __str__(self):
    return str(self.data)