![](/img/trans.png)
[英]Python modules with identical names (i.e., reusing standard module names in packages)
[英]Reusing; i.e., continuing in stream of a python data generator in a class
我編寫了以下示例 class,它具有一個生成器——在本例中是一個范圍 object。
class tmp():
def _setgen(self):
self.gen = range(1,5)
def __init__(self):
self._setgen() # I define my generator only once; here in the __init__()
def getval(self):
for g in self.gen: # use the afore defined `gen`
print(g)
if g > 2:
break
t = tmp() # init the object; including the range within the object
t.getval() # As expected numbers 1,2,3
t.getval() # Expect Number 4; but get again 1,2,3
為什么 object 范圍被重置? 我想繼續,我在休息時停了下來。 所以t.getval()
的第二次調用應該打印一個 4,而不是從重新開始對新的 (?) 范圍 object 進行操作。
什么是解決我“想要的行為”的方法?
self.gen = iter(range(1, 5))
會成功的。 如果要將其保留為 state,則gen
應該是該range
的迭代器。
每次調用時, getval
中的for
循環都會將range
包裝在一個新的iter
中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.