Есть ли способ, чтобы сохранить состояние относится к классу в определенный момент времени?

голоса
0

В 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]
Задан 20/10/2018 в 05:04
источник пользователем
На других языках...                            


3 ответов

голоса
2

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

Ответил 20/10/2018 в 05:13
источник пользователем

голоса
1

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

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

Итак, у вас есть первоначальный список ходов:

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

Затем профильтровать:

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

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

Ответил 21/10/2018 в 00:57
источник пользователем

голоса
1

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

copy.deepcopy(x)

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

Ответил 20/10/2018 в 05:17
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more