Python类:追加一个列表&合并一个方法
今天我刚开始学习Python类,我有一个简短的问题。我很惊讶它使我的代码变得更加简洁,但我正在试图弄清楚,对于我正在研究的一个国际象棋问题,下面的内容是否可行 1我可以从类方法中以某种方式附加列表吗?我试图找出是否有一种方法可以在每次调用capture时将片段累积到列表中 2如何从类中调用一个方法以用于另一个方法?我想能够检查一个动作是否有效,甚至在继续之前,如果作品应该尝试捕捉另一个动作或移动Python类:追加一个列表&合并一个方法,python,class,chess,Python,Class,Chess,今天我刚开始学习Python类,我有一个简短的问题。我很惊讶它使我的代码变得更加简洁,但我正在试图弄清楚,对于我正在研究的一个国际象棋问题,下面的内容是否可行 1我可以从类方法中以某种方式附加列表吗?我试图找出是否有一种方法可以在每次调用capture时将片段累积到列表中 2如何从类中调用一个方法以用于另一个方法?我想能够检查一个动作是否有效,甚至在继续之前,如果作品应该尝试捕捉另一个动作或移动 class Piece(Board): def __init__(self, piece, r,
class Piece(Board):
def __init__(self, piece, r, c):
self.piece = piece
self.r = r
self.c = c
这是我想在下面的函数中加入的函数,以避免冗余问题2
这些功能目前是相同的。我想看看如何使用捕获函数来累积一个片段列表。问题1
一如既往地感谢您。1。我可以从类方法中以某种方式附加列表吗
在类中创建一个列表-片段列表,用于存储片段:
class Piece(Board):
def __init__(self, piece, r, c):
self.piece = piece
self.r = r
self.c = c
self.piecesList = [] #or init using some argument if you want to use some list from outside of the class
无论何时调用捕获方法,只需将片段附加到片段列表中:
二,。如何从类中调用一个方法以在另一个方法中使用
您可以简单地使用self.methodarg1、arg2…调用它:
太棒了-我现在沉迷于这些…真的很强大!谢谢
def capture(self,r,c, r_offset, c_offset):
piece = self.piece
self.tgt_r, self.tgt_c = r+r_offset, c+c_offset
if self.tgt_r > 7 or self.tgt_c < 0:
return None
else:
nb = Board(curr).copy_board() #this board is just 8x8 np.array
nb[self.tgt_r,self.tgt_c], nb[r,c] = piece,'-'
return nb
def move(self,r,c, r_offset, c_offset):
piece = self.piece
self.tgt_r, self.tgt_c = r+r_offset, c+c_offset
if self.tgt_r > 7 or self.tgt_c < 0:
return None
else:
nb = Board(curr).copy_board()
nb[self.tgt_r,self.tgt_c], nb[r,c] = piece,'-'
return nb
class Piece(Board):
def __init__(self, piece, r, c):
self.piece = piece
self.r = r
self.c = c
self.piecesList = [] #or init using some argument if you want to use some list from outside of the class
def capture(self,r,c, r_offset, c_offset):
self.piecesList.append(self.piece)
piece = self.piece
def capture(self,r,c, r_offset, c_offset):
piece = self.piece
if self.valid_move(r,c,r_offset,c_offset) == False:
return None
else:
nb = Board(curr).copy_board() #this board is just 8x8 np.array
nb[self.tgt_r,self.tgt_c], nb[r,c] = piece,'-'
return nb