@w0lkolak

Зачем функции filter методы итератора?

Заглянул в builtins
class filter(object)
    def __getattribute__(self, *args, **kwargs): # real signature unknown
        """ Return getattr(self, name). """
        pass

    def __init__(self, function_or_None, iterable): # real signature unknown; restored from __doc__
        pass

    def __iter__(self, *args, **kwargs): # real signature unknown
        """ Implement iter(self). """
        pass

Не могу осознать для чего методы создаваемого объекта функции, которая его создаёт - может кто просветить?
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ну ответ на вопрос вполне очевиден:
class filter(object):
Это не функция, это класс. Метод __iter__ будет принадлежать экземпляру этого класса, т.е. результат вызова filter() можно будет итерировать.
А вот почему это класс, вопрос поинтереснее. Я подозреваю, что filter() старше, чем yield и генераторы - а без них класс был бы единственным способом реализовать нужное поведение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы