Python:我可以使用__getitem__代替__next__和__iter__吗?

时间:2018-06-21 09:46:53

标签: python python-3.x iterator

class Demo1:
    def __init__(self, *args):
        self.__list = list(args)

    def __len__(self):
        return len(self.__list)

    def __getitem__(self, index):
        return self.__list[index]


class Demo2:
    def __init__(self, *args):
        self.__list = list(args)

    def __len__(self):
        return len(self.__list)

    def __iter__(self):
        self.i = -1
        return self

    def __next__(self):
        if self.i < len(self.__list):
            self.i += 1
            return self.__list[self.i]
        raise StopIteration

如果仅使用__getitem__,则当我要迭代Demo1对象时,python可以很好地工作;我还可以使用__iter____next__来实现“迭代器接口”,然后实现迭代的Demo2对象。

那么这两种方法有什么区别?

0 个答案:

没有答案