On 16/10/12 08:53, Osemeka Osuagwu wrote:
# or make this a regular instance method
class Grid:
def extend_grid(self, thickness=4, force=False):
# do stuff to self to extend it
# no need to return anything
Just to clarify, if I went with the top level function; then I guess
I'll define a 'name' attribute for each individual grid and then pass
that name in place of the 'grid' argument in your example. Is this
correct?
Yes but then it wouldn't be OOP. You'd be back in the world of
traditional procedural programming passing explicit data references
around. Its much better to make it an instance method with the self
reference being passed implicitly
def edit_cell(self, cells, state = '##'):
cells = cells
for eachcell in cells:
Grid.__array[eachcell[0]][eachcell[1]] = state
return
...
As you have written this, you cannot have two Grids. Actually you can, but
since they both share the same state, you cannot have two DIFFERENT Grids.
I don't quite get this one; I intended state to be just the value of
the particular cell in the concerned instance. I don't think it gets
shared by all the grids.
Notice the line:
Grid.__array[....] = state
The array is shared by all instances because its an attribute of the
class not the instance. You want every instance to have its own
__array[] of cells. ie. self.__array[]
Incidentally the cells = cells line is pointless, it does nothing.
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor