Я использую библиотеку, которая предоставляет мне некоторые объекты (сеансы SocketIO, но эта деталь выходит за рамки вопроса).
Я хочу сохранить (ссылки на) те объекты (а не копии) после подключения, а затем удалить их. Исходя из фона C++, я ожидаю, что set
сможет просто сохранить указатели на эти объекты. Но это не хеширование, поэтому я не могу поставить их в set
. И я не знаю, как Python способ получить что-то похожее на указатель. Я могу поместить их в список, но затем удаление требует обхода (O (n)), и вставка позволит дублировать.
Есть ли какой-либо трюк, чтобы получить что-то, что ведет себя как указатель C++ (сопоставимый, упорядоченный), из объекта Python?
Прямо сейчас, я делаю:
# global var
my_objects = []
# upon receive:
my_objects.append(session)
# upon removal:
my_objects = my_objects - session
Одна идея - использовать идентификатор объекта. Он идентифицирует объект, хотя он будет работать, только если вы действительно используете один и тот же объект, а не новый с теми же значениями.
# global var
my_objects = {}
# upon receive:
my_objects[id(session)] = session
# upon removal:
del my_objects[id(session)]