Как хранить неживые предметы

1

Я использую библиотеку, которая предоставляет мне некоторые объекты (сеансы 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
Теги:

1 ответ

3

Одна идея - использовать идентификатор объекта. Он идентифицирует объект, хотя он будет работать, только если вы действительно используете один и тот же объект, а не новый с теми же значениями.

# global var
my_objects = {}

# upon receive:
my_objects[id(session)] = session

# upon removal:
del my_objects[id(session)]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню