Python 如何使用迭代器类?
我试图创建一个迭代器类,它会给我一个路径抛出一个树图,每次迭代它都会根据特定条件返回下一步 所以我在这里查阅了如何做到这一点: 这就是我到目前为止写的:Python 如何使用迭代器类?,python,iterator,Python,Iterator,我试图创建一个迭代器类,它会给我一个路径抛出一个树图,每次迭代它都会根据特定条件返回下一步 所以我在这里查阅了如何做到这一点: 这就是我到目前为止写的: def travel_path_iterator(self, article_name): return Path_Iter(article_name) class Path_Iter: def __init__(self,article): self.article=article def __
def travel_path_iterator(self, article_name):
return Path_Iter(article_name)
class Path_Iter:
def __init__(self,article):
self.article=article
def __iter__(self):
return next(self)
def __next__(self):
answer= self.article.get_max_out_nb()
if answer != self.article.get_name():
return answer
else:
raise StopIteration
但是我有一个问题要给这个班打电话。
我的输出总是:
<__main__.Path_Iter object at 0x7fe94049fc50>
猜猜我做错了什么 当
Path\u Iter
已经是迭代器时,\u Iter\u
-方法应该返回self
:
def __iter__(self):
return self
接下来,要迭代迭代器,需要某种循环。例如,要打印内容,可以将迭代器转换为列表:
print list(xyz.travel_path_iterator(article_name))
使用生成器功能:
def travel_path_generator(article):
while True:
answer = article.get_max_out_nb()
if answer == article.get_name()
break
else:
yield answer
什么输出?您的代码没有输出任何内容。您的
\uuuuuuuuuuu next\uuuuuuu
-方法看起来很奇怪。get\u max\u out\u nb
是否每次调用都会在下一个答案中产生结果?编写生成值的生成器函数会更简单。我是在迭代器类或函数中编写的?不需要递归,对吗?我需要打印列表(xyz.travel\u path\u迭代器(article\u name))?在PathIter类中?在类之外,这是一个示例,说明如何使用迭代器。