PEP 288 ponderings

Ian Bicking ianb at colorstudy.com
Sun Jan 2 01:29:14 EST 2005


Steven Bethard wrote:
> PEP 288 was mentioned in one of the lambda threads and so I ended up 
> reading it for the first time recently.  I definitely don't like the 
> idea of a magical __self__ variable that isn't declared anywhere.  It 
> also seemed to me like generator attributes don't really solve the 
> problem very cleanly.  An example from the PEP[1]:
> 
>     def mygen():
>         while True:
>             print __self__.data
>             yield None
> 
>     g = mygen()
>     g.data = 1
>     g.next()                # prints 1
>     g.data = 2
>     g.next()                # prints 2

I don't get why this isn't good enough:

     def mygen(data):
         while True:
             print data[0]
             yield None

     data = [None]
     g = mygen(data)
     data[0] = 1
     g.next()
     data[0] = 1
     g.next()

Using a one-element list is kind of annoying, because it isn't clear out 
of context that it's just a way of creating shared state.  But it's 
okay, work right now, and provides the exact same functionality.  The 
exception part of PEP 288 still seems interesting.

-- 
Ian Bicking  /  ianb at colorstudy.com  / http://blog.ianbicking.org



More information about the Python-list mailing list