我在python設計定製迭代器:蟒蛇設計定製迭代器
class Iterator():
def __init__(self):
return
def fit(self, n):
self.n = n
return self
def __iter__(self):
for i in range(self.n):
yield i
return
it = Iterator().fit(10)
for i in it:
print(i)
it.fit(20)
for i in it:
print(i)
它工作正常,但我想知道是否有可能在此之前,前一個結束導致新fit
被稱爲這個班的奇怪行爲。
如果是的話我應該如何設計它才能使它更健壯? 從fit
方法中傳遞一些參數很重要。
編輯:我將介紹一個例子,它類似於我原來的問題
的iterator
類被設計成由User
類使用。當調用evaluate
方法時,打印所有數字直到n/k
都很重要。沒有任何例外。
也許使用iterator.fit(n)
方法解決了這個問題? 類迭代器():
def __init__(self, k):
self.k = k
return
def fit(self, n):
for i in range(int(n/self.k)):
yield i
return
class User():
def __init__(self, iterator):
self.iterator = iterator
return
def evaluate(self, n):
for i in self.iterator.fit(n):
print(i)
return
it = Iterator(2)
u = User(it)
u.evaluate(10) # I want to be sure that all the numbers until 9 are printed
u.evaluate(20) # I want to be sure that all the numbers until 20 are printed
你看起來像是在試圖編寫協同例程。看[這個問題](http://stackoverflow.com/questions/19302530/python-generator-send-function-purpose)。 –