Iteratorパターン
イテレータ、イテレータってよく聞くけど、要するにこんな感じなんだろう。
class MyList: def __init__(self, mylist): # 引数mylistは通常のリストを想定 self.mylist = mylist def getsize(self): return len(self.mylist) def __getitem__(self, index): # お遊び index2 = self.getsize() - 1 - index return self.mylist[index2] def myiter(self): return MyIterList(self) def __iter__(self): return MyIterList(self) class MyIterList: def __init__(self, mylist): # 引数mylistはMyList型を想定 self.mylist = mylist # 自フィールドがMyList型インスタンスを参照するようにする self.count = 0 def hasNext(self): return self.count < self.mylist.getsize() def mynext(self): nextvalue = self.mylist[self.count] self.count += 1 return nextvalue def __next__(self): if not self.hasNext(): raise StopIteration() return self.mynext() if __name__ == '__main__': test = MyList([1, 2, 3, 4, 5]) for i in range(5): print(test[i]) print('') print('myiter_test') itertest = test.myiter() while itertest.hasNext(): print( itertest.mynext() ) print('my__iter__test') for i in test: print(i)