Как обернуть функцию инициализации / очистки в Boost python

Недавно я обнаружил существование boost-python и был поражен его очевидной простотой. Я хотел попробовать и начал оборачивать существующую библиотеку C ++.

Хотя обернуть вызовы API базовой библиотеки довольно просто (ничего особенного, только обычные вызовы функций и очень распространенные параметры), я не знаю, как правильно обернуть функции инициализации / очистки:

Как бы то ни было, мои Библиотека C ++ требует, чтобы вызывающая сторона сначала вызывала mylib :: initialize () при запуске программы и вызывала mylib :: cleanup () до ее завершения (на самом деле существует также инициализатор

Как мне обернуть это с помощью boost python?

Заставить пользователя Python вызвать mymodule.initialize () и mymodule.cleanup () кажется не очень питоническим . Есть ли какой-нибудь способ сделать это автоматически? Идеально, вызов initialize () будет выполняться прозрачно, когда модуль импортируется, а вызов cleanup () также выполняется при завершении скрипта python.

Есть ли способ сделать это сделай это ? Если нет, какое решение является наиболее элегантным?

Спасибо.

6
задан ereOn 23 March 2011 в 13:56
поделиться