Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用迭代器类?_Python_Iterator - Fatal编程技术网

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类中?在类之外,这是一个示例,说明如何使用迭代器。