using "private" parameters as static storage?
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Thu Nov 13 22:38:04 EST 2008
On Thu, 13 Nov 2008 14:05:17 -0500, Jean-Paul Calderone wrote:
> On Thu, 13 Nov 2008 10:58:49 -0800 (PST), rurpy at yahoo.com wrote:
>>On Nov 13, 11:32 am, "J. Cliff Dyer" <j... at sdf.lonestar.org> 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
More information about the Python-list
mailing list