Метод send у генератора!
yield является таким же выражением, как и, например, some_func(). А значит, оно может возвращать значение.
Генератор может не только отправлять данные наружу с помощью оператора yield, но и получать их извне - для этого через метод send нужно эти данные в генератор передать, а генератор эти данные из yield должен принять.
В примере(см. выше) - мы посылаем в генератор значения, он возвращает накопленную сумму.
Подобное можно сделать и с помощью ООП, но это по сути просто другой способ реализации.