репост http://community.livejournal.com/ru_python/225605.html
Ситуация какбэ следующая.
Есть код который пишет риплей игры состоящий из дампов эвентов сереализуя объекты класса Event. по сути просто несколько полей этого класса дампятся так: pickle.dump(self.__dict__, file).

Проблема в том что есть поле Event.args = в которое могут попадать любые объекты целиком.

u1 = Unit()
u1.set_target(u2) -> дампится u2

мне не нужно u2 целиком дампить, мне нужно сохранить например его id из "мира" или состояния интерпретатора и потом во время риплея вытащить этот объект по id. мир детерминированный поэтому рандома в нём нет (Parallel Simulation использовался для риплеев как минимум со второго квейка)

сохранять просто адрес объекта не катит, т.к. при любых небольших правках он меняется.
наследовать все объекты от какого-то одного объекта с object_id и потом инкрементить его, дальше фактори/брокеры/менеджеры объектов - тоже блоат и оверкил.

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

не совсем понимаю куда копать. буду рад keyword-ам.