Есть ли способ сохранить состояние класса в определенный момент времени? - PullRequest
0 голосов
/ 20 октября 2018

В Python 3 есть ли в любом случае создать переменную, которая может хранить неизменное состояние класса в определенный момент времени?Если есть, я должен пропустить терминологию для этого.Я также не говорю о статических, мои атрибуты должны быть в состоянии изменить.

Это будет работать так:

class_save = [Class(a,b,c).attribute, Class(d,e,f).attribute]

static_save = class_save

#if I do this
class_save.remove(static_save[1])

#class_save should now equal [Class(a,b,c).attribute]
#static_save should still be equal to [Class(a,b,c).attribute, Class(d,e,f).attribute]

Ответы [ 3 ]

0 голосов
/ 20 октября 2018

Если у вас полная копия в памяти, вам нужна глубокая копия

copy.deepcopy(x)

Если вы хотите, чтобы она была заморожена на диске pickle.dump it.

0 голосов
/ 21 октября 2018

В комментарии вы сказали:

Я пишу шахматную игру и реализую ходы для ладьи.У меня есть функция, которая составляет список всех возможных ходов ладьи, а затем проверяет список, чтобы убедиться, что ни один из ходов не заблокирован другими классами "ChessPiece".Мне нужен способ обращения к исходному списку, созданному функцией, даже после того, как я удалил из него некоторые элементы.

ОК, поэтому у вас есть оригинальный список ходов:

all_moves = [move1, move2, move3, ...]

Затем вы фильтруете его:

valid_moves = [move for move in all_moves if is_valid_move(move)]

Это дает вам два списка: второй содержит ссылки на подмножество элементов первого списка.Не требуется глубокое копирование и чрезмерное выделение памяти.

0 голосов
/ 20 октября 2018

Вы имеете в виду сериализацию объекта?Используя библиотеку pickle, вы можете сделать pickle.dumps(object) для сериализации и pickle.loads(serialized_object) для десериализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...