精華區beta Python 關於我們 聯絡資訊
※ 引述《huggie (huggie)》之銘言: : 我要我自己做的 class 可以 loop for loop : for X in Y: : print X : 請問那個 Y 要怎麼做? : 我可以設定一個 Y.foo() : 讓 foo() 變成 generator : 但如果要直接 loop Y 要如何做呢? 如果你已經有寫好的 generator 就稱它為 Y.foo 好了, 那你可以這樣寫: class Y: def foo(self): ... def __iter__(self): return self.foo() 或者是如果你不想用 generator, 那也可以寫自己的 iterator, example: class fib: def __init__(self, max = None): self.max = max def __iter__(self): return self.iterator(self) class iterator: def __init__(self, owner): self.a, self.b = 1, 1 self.owner = owner def next(self): result, self.a, self.b = self.a, self.b, self.a + self.b if not self.owner is None and result > self.owner.max: raise StopIteration return result >>> j = fib(200) >>> for k in j: print k 1 1 2 3 5 8 13 21 34 55 89 144 >>> -- その乾いた哀愁の瞳に去來するものは何か? 失ったもの 得たもの そして廣大なネットの狹間で彼が見たものとは? 虛像と實存と記號の中に彼は今、何を想うのか? <バトルプログラマーシラセ> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.224.64
huggie:哦..多謝 06/03 02:05