У меня есть класс GameBoard, и я выполняю поиск по нему. Я хочу сохранить текущую игровую доску в списке, изменить ее состояние, сохранить ТОТ в списке и т. Д. (Поэтому у меня будут дополнительные версии игровой доски по ходу игры).
В настоящее время я делаю это с copy.deepcopy, но, похоже, он не сохраняется и не переходит. Вот пример моего кода:
moves = [] # just for reference. this has at least one value in it by the time the while loop hits.
while winner is False and len(moves) > 0:
g_string = gb.to_string()
if g_string == win_string:
winner = True
break
possibilities = gb.legal_moves(visited) # returns a list of possible moves to take
if len(possibilities) > 0:
moves.append(copy.deepcopy(gb))
gb.perform(possibilities[0]) # this modifies gb, according to the gameplay move.
# snipped, for brevity.
Если бы после 100 итераций я напечатал moves
, я бы получил 100 одинаковых объектов. Если я распечатываю объект каждый раз перед добавлением, они определенно отличаются на момент добавления.
Чтобы уточнить, я хотел бы, чтобы копии этих объектов (для использования в таких вещах, как граф, для выполнения DFS и BFS)
Вот еще мой класс GameBoard
class GameBoard:
number_of_rows = 3
rows = []
global random_puzzle
def __init__(self, setup):
#some code. fills in the rows. adds some things to that list. etcetc..
# more code