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

Reply via email to