limitless
limitless

Reputation: 669

How to use the iterator class?

Im trying to create a iterator class that will give me a path throw a tree graph, which every iteration it will return the next step according to certain conditions.

So i looked up how to do this here : Build a Basic Python Iterator

and this is what i wrote so far :

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

But I have a problem to call this class. my output is always :

<__main__.Path_Iter object at 0x7fe94049fc50>

any guesses what im doing wrong ?

Upvotes: 0

Views: 85

Answers (2)

Open AI - Opting Out
Open AI - Opting Out

Reputation: 24133

Using a generator function:

def travel_path_generator(article):
    while True:
        answer = article.get_max_out_nb()
        if answer == article.get_name()
            break
        else:
            yield answer

Upvotes: 0

Daniel
Daniel

Reputation: 42748

While Path_Iter is already an iterator, the __iter__-method should return self:

def __iter__(self):
    return self

Next, to iterate an iterator, you need some kind of loop. E.g. to print the contents, you could convert the iterator to a list:

print list(xyz.travel_path_iterator(article_name))

Upvotes: 2

Related Questions