Python: генератор, кажется, всегда дает мне первый элемент? - PullRequest
0 голосов
/ 29 июня 2018

код

class MyClass:
    def __init__(self):
        from datetime import datetime
        self.union_date = [datetime(2000,1,1), datetime(2000,1,2), datetime(2000,1,3)]

    def get_new_datetime(self):
        for date_time in self.union_date:
            yield date_time

И я вызываю функцию генератора, как показано ниже:

In [10]: a = MyClass()

In [11]: a.get_new_datetime()
Out[11]: <generator object MyClass.get_new_datetime at 0x7fa90bc20150>

In [12]: next(a.get_new_datetime())
Out[12]: datetime.datetime(2000, 1, 1, 0, 0)

In [13]: next(a.get_new_datetime())
Out[13]: datetime.datetime(2000, 1, 1, 0, 0)

In [14]: next(a.get_new_datetime())
Out[14]: datetime.datetime(2000, 1, 1, 0, 0)

Показывает только первый элемент ... Почему это происходит?

1 Ответ

0 голосов
/ 29 июня 2018

Вы создаете новый генератор каждый раз, возможно, вы имели в виду:

In []:
g = a.get_new_datetime()
next(g)

Out[]:
datetime.datetime(2000, 1, 1, 0, 0)

In []:
next(g)

Out[]:
datetime.datetime(2000, 1, 2, 0, 0)

И т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...