Help, multidimensional list
Terry Reedy
tjreedy at udel.edu
Sun Dec 28 17:50:07 EST 2003
More information about the Python-list mailing list
Sun Dec 28 17:50:07 EST 2003
- Previous message (by thread): Help, multidimensional list
- Next message (by thread): Python deutsch
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"Christopher Koppler" <klapotec at chello.at> wrote in message news:jbrtuvg9fh5e0hdj0d6vseo7287r94sa7d at 4ax.com... > On Sun, 28 Dec 2003 14:27:41 +0000, Crawley > <crawley.storm at IGetTooMuchSpamAsItIs.com> wrote: > > >Im trying to create a list of lists and for some reason its not working: > > > >class Tile: > > _next = { 'n':None, 'ne':None, 'e':None, 'se':None, 's':None, > >'sw':None, 'w':None, 'nw':None } > > > > > >def blankGridCanvas( maxx, maxy ): > > grid = [] > > for y in xrange( 0, maxy ): > > yline = [] > > for x in xrange( 0, maxx ): > > t = Tile() > > if y != 0: > > t._next[ 'n' ] = grid[ y - 1 ][ x ] > > t._next[ 'n' ]._next[ 's' ] = t > > > > yline.append( t ) > > grid.append( yline ) > > > > for y in xrange( 0, maxy ): > > for x in xrange( 0, maxx ): > > print grid[ x ][ y ], grid[ x ][ y ]._next > > return grid > > > >now by my reconing this should be a list of lists with each element being > >an instance of Tile, > > You only create a *class* Tile, and provide no way to create > *instances* of it No, the line 't=Tile()' does create a separate Tile for each grid position. However, there is only one class attribute shared by all instances. > - so much like with static variables in other > languages, you only have one 'instance' here. To be able to create > separate instances, you need a constructor in your class to > instantiate every instance, like so: > > class Tile: > def __init__(self): > self._next = { 'n':None, 'ne':None, 'e':None, 'se':None, > 's':None, 'sw':None, 'w':None, 'nw':None } You do not need __init__ for separate instances, but do need it to give each instance its own map. > and some references being manipulated to point to each > >other. But strangly no, its actually a list of lists where each element is > >the SAME instance of Tile, so I change one, i change them ALL! As stated above, you do have separate instances but only one map attached to the class instead of a separate map for each instance. Koppler's __init__ will fix this. Terry J. Reedy
- Previous message (by thread): Help, multidimensional list
- Next message (by thread): Python deutsch
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list