#python #object #pickle #object-reference
#python #объект #рассол #объект-ссылка
Вопрос:
У меня есть код Python, который использует некоторый одноэлементный класс. Один из вариантов использования, который мне нужен, — это сохранить класс как выделенный объект. Логика приложения определяет, когда читать из выделенного объекта и когда его перестраивать (что-то вроде кэширования).
Проблема в том, что тип / имя объекта идентичны объекту в памяти, и из-за этого, даже при изменении его имени перед его сохранением, я получаю ту же ссылку.
Из-за этого я не могу контролировать копирование значений во время выполнения из маринованного объекта (частично маринованного ..)
Что я могу сделать?
Пример:
class A:
some_attribute = ""
A.some_attribute = "a new runtime data"
with open("pickled_object.pk", "wb") as pk:
pickle.dump(A, pk)
----
"" different startup ability ""
with open("pickled_object.pk", "rb") as pk:
A = pickle.load(pk)
Я надеюсь, вы поняли идею, я отредактирую, если потребуется дополнительная информация..
Комментарии:
1. То, что вы описываете, — это весь смысл синглтона. Должен существовать только один экземпляр этого объекта, и он не должен быть копируемым. Учитывая это, неясно, какого поведения вы ожидаете.
2. «Проблема в том, что тип / имя объекта идентичны объекту в памяти, и из-за этого, даже при изменении его имени перед его сохранением, я получаю ту же ссылку». Я этого не понимаю