Мне было любопытно использовать статические переменные в Python, и я остановился на: Почему в Python нет статических переменных?
В принятом ответе, который я нашел информативным, онСказано: «Если вы хотите, чтобы поведение вашей функции менялось при каждом вызове, то вам нужен генератор».
Однако я был немного смущен, так как используемый здесь пример можно сделать и с классом.:
class Foo(object):
def __init__(self, bar):
self.bar = bar
def __call__(self):
self.bar = self.bar * 3 % 5
return self.bar
foo = Foo(bar)
print foo()
print foo()
Для меня это имеет больше смысла (но, вероятно, только потому, что я раньше не использовал генераторы должным образом).
Поэтому мой вопрос заключается в том, есть ли какое-то другое преимущество в использовании генераторовнад классами, когда функция должна менять поведение при каждом вызове.