对于我从学校上学的作业,我们需要下棋。一个任务是我们需要创建一个名为chessboard的类,其中包含一些方法,如place,delete和replace。
我的棋盘是一个字典,按键作为地方,以元组的形式,而值作为棋子作为值。但是如果我想把一个元组作为我的方法的参数,那就失败了。
这是我的代码:
class ChessBoard:
def __init__(self):
DICT={ (A,1):None,(A,2):None,(A,3):None,(A,4):None,(A,5):None,(A,6):None,(A,7):None,(A,8):None,
(B,1):None,(B,2):None,(B,3):None,(B,4):None,(B,5):None,(B,6):None,(B,7):None,(B,8):None,
(C,1):None,(C,2):None,(C,3):None,(C,4):None,(C,5):None,(C,6):None,(C,7):None,(C,8):None,
(D,1):None,(D,2):None,(D,3):None,(D,4):None,(D,5):None,(D,6):None,(D,7):None,(D,8):None,
(E,1):None,(E,2):None,(E,3):None,(E,4):None,(E,5):None,(E,6):None,(E,7):None,(E,8):None,
(F,1):None,(F,2):None,(F,3):None,(F,4):None,(F,5):None,(F,6):None,(F,7):None,(F,8):None,
(G,1):None,(G,2):None,(G,3):None,(G,4):None,(G,5):None,(G,6):None,(G,7):None,(G,8):None,
(H,1):None,(H,2):None,(H,3):None,(H,4):None,(H,5):None,(H,6):None,(H,7):None,(H,8):None }
def place(self, piece,(row,column)):
self.piece=piece
self.(row,column)=(row,column)
DICT[(row,column)]=self.piece
答案 0 :(得分:0)
您没有在init中的DICT
属性中创建实例属性。要将其设置为实例属性,您需要将其作为self.DICT
所以,你的init应该看起来像这样:
# not showing your full dictionary:
def __init__(self):
self.DICT={ (A,1):None,(A,2):None}
现在,在您的其他实例方法中,您只需相应地访问,作为实例属性。您正在某个位置放置一块,因此您似乎想要在self.piece
设置row,column
。此外,我不知道您的其他代码是什么样的,但如果您传递给piece
方法的place
参数仅用于该方法,则无需设置它作为实例属性。
因此,要解决您的问题,您可以这样做:
def place(self, piece,(row,column)):
self.piece=piece
self.DICT[(row,column)]=self.piece
如果您实际上没有在代码中的任何其他地方使用piece
,请不要将其设置为实例属性,您只需执行以下操作:
def place(self, piece,(row,column)):
self.DICT[(row,column)] = piece
答案 1 :(得分:0)
我认为这是你想要实现的目标,
def place(self, piece, row_column_tuple):
self.piece=piece
self.row_column_tuple=row_column_tuple
DICT[row_column_tuple]=self.piece
然后在代码的其他地方你可以像
一样调用这个方法place(piece, (row, column))