On Thu, 13 Nov 2008 14:05:17 -0500, Jean-Paul Calderone wrote: > On Thu, 13 Nov 2008 10:58:49 -0800 (PST), [EMAIL PROTECTED] wrote: >>On Nov 13, 11:32 am, "J. Cliff Dyer" <[EMAIL PROTECTED]> wrote: >>> On Thu, 2008-11-13 at 09:38 -0800, Matimus wrote: >> [snip] >>> > Preserving state is what classes are for. >>> >>> Preserving state is what *objects* are for. >> >>Not exclusively, generators also preserve state. >> >>def _spam(): >> count = 1 >> while 1: >> yield "spam " * count >> count += 1 >>spam = _spam.next() >> >> > Surprise - generators are objects.
Yes, technically, but the value of count is not stored as an instance attribute: you can't access spam.count. Instead, it is stored in the internals of the generator. Generators are a special case of closures: http://en.wikipedia.org/wiki/Closure_(computer_science) Note that in some languages, closures are used to implement objects, rather than the other way around. -- Steven -- http://mail.python.org/mailman/listinfo/python-list