Leo Degon wrote: > I'm trying to create a class where the main focus is creating a list whose > elements are lists and the elements of those lists are collection of zeros > and ones. I am trying to create functions to rotate the list ninety > degrees, to reflect it. Having a few problems with the rotation. > get TypeError: 'list' object is not callable > > def pset(n): > for i in n: > print(i) > class board(): > def make(self,size): > b=[] > for i in range(size[0]): > b.append([]) > for j in range(size[1]): > b[i].append(0) > return b > > def rotate(self,board,size):
The local parameter "board" shades the class with the same name, > size[0],size[1]=size[1],size[0] > new=board(size) so here you are not making a new board instance but instead trying to call the board parameter which is a list. To fix this problem you have to rename the parameter or the class. I recommend that you rename the class to Board (by convention class names start with an uppercase letter). As to the parameter board, you actually don't need it at all -- you can instead make the board attribute of the new Board instance a rotated version of self.board. (There are more bugs in your code, but I suggest you tackle them one at a time. Come back here if you need help fixing them) > lists=[] > for j in range(size[1]): > lists.append([]) > for i in range(size[0]).__reversed__(): > lists[j].append(board[i][j]) > for i in range(size[1]): > for j in range(size[0]): > new.board[i,j]=lists[i,j] > return(new.board) > def __init__(self,size): > self.size=size > self.board=self.make(size) > y=[7,7] > x=board(y) > pset(x.board) > x.board[0][0]=1 > print() > pset(x.board) > print() > x.board=x.rotate(x.board,x.size) > pset(x.board) > print() _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor