所以我有一个班级皇后。我想将这个实例传递到一个函数中,并在该函数中创建一个Queen(或Rook或King)的新实例(根据传入的类可以是Rook、King等),但初始输入参数不同。我希望这很简单
我可以从一个实用程序类中完成这项工作,但我需要Board类中的功能。你知道吗
# This part works if I do it in the utility class
board.removePiece(pos6)
board.removePiece(pos2)
board.placePiece(pos6, Queen("Black", pos6))
# This part doesnt work
def capturePiece(self, pieceA, pieceB):
temp = pieceA
pos = pieceB.position
self.removePiece(pieceB.position)
self.removePiece(pieceA.position)
self.placePiece(pos, temp.create_another(temp.team, pos))
# From the Queen, King, etc, class
def create_another(self, team, position): # Returning constructor
return type(self, team, position)()
对于基类上的类方法来说,这可能是一个很好的例子:
您可以尝试:
按预期显示:
但这通常是一个糟糕的设计。重复地销毁和创建新对象比简单地更改它们的属性要昂贵得多。无论如何,在一个real棋盘上,你不会创建新的棋子,而是移动它们,因此你没有真正的理由不实现一个move方法来改变棋子基类上的位置。你知道吗
相关问题 更多 >
编程相关推荐