Есть модуль на С++, к-й через SWIG прицеплен в питон. В питоне создается экземпляр класса С++, к-й передается по указателю в другой класс С++ (например создается граф, работа с графом идет из С++ а наполнение графа из питона).
Дальше начинается кино. Поскольку исходный объект создан в куче и будет прибит сборщиком мусора питон, то пока он в С++ нужен в питоне его надо держать. С другой стороны, если в С++ выяснится что он уже не нужен, то прибить его из С++ не получится, это нужно делать из питона.
Т.е. при создании такого объекта в питоне нужно вызвать из С++ некую порождающую ф-ю, к-я возвращала бы смарт пойнтер или его аналоги, ну в С++ юзать смарты. Теперь внимание, вопрос - как Ъ писать такие вещи, что бы при работе из питона с ними не было проблем? Свиг обычные то указатели уродует довольно прилично (заворачивает черти во что) и доступ к полям и методам класса требует танцев с бубном, а уж во что он смарт пойнтер превратит и подумать страшно... Да и написание порождающей ф-ии не вызывает энтузиазма, все таки я привык что в С++ и питоне код был бол менее похож идеологически похож (во всяком случае я за это борюсь;-)) а тут в С++ вызывать одно, в питоне другое да и писать эти ф-ии как то лень.
Поделитесь опытом;-)