Я не уверен, что всегда плохо иметь два объекта, которые ссылаются друг на друга. Как бы то ни было, что я нахожу необычным, так это то, что вы создаете экземпляр для черного элемента с помощью метода move_white_piece
. Конечно, это метод, который нужно вызывать повторно. Планируете ли вы создавать новую черную фигуру каждый раз, когда белые должны сделать ход? Это мало что значит для меня. Что имеет больше смысла, так это:
from black import Black
class White:
def __init__(self):
self.black_piece = Black() # create black piece when we are created
black_piece.set_white_piece(self) # give black piece a reference to ourself
def move_white_piece(self):
# whatever
, а затем класс Black:
class Black:
def set_white_piece(self, white_piece):
self.white_piece = white_piece
Альтернативный стиль:
class White:
def __init__(self):
self.black_piece = Black(self) # create black piece when we are created
def move_white_piece(self):
pass
class Black:
def __init__(self, white_piece):
self.white_piece = white_piece
Это вопрос вкуса и / или требования.
Но подождите, потому что есть еще:
Если у вас нет очень особой причины для этого , не следует Не будьте отдельным классом Black
и White
, если правила и стратегии для обеих цветных фигур точно такие же, например, как в стандартной игре в шахматы. Конечно, один цвет должен сделать первый ход, и с этого момента фигуры чередуются. Но пока вы реализуете игру, в которой правила и стратегии для черного и белого одинаковы, черный и белый должны быть двумя экземплярами одного класса.