2009年10月10日土曜日

イテレータ型

クラスに特殊メソッド__iter__とnextメソッドを定義すると
forおよびin文を使えるようになる

class A:
    i = -1
    li = [1, 2, 3]
    def __iter__(self):
        self.i = -1
        return self
    def next(self):
        try:
            self.i += 1
            return self.li[self.i]
        except:
            raise StopIteration()

a = A()

for v in a:
    print v

print 1 in a

詳細はドキュメントで

0 件のコメント:

コメントを投稿