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对象。
那么这两种方法有什么区别?