Нет «лучшего»; это полностью зависит от ваших обстоятельств.
Для одного класса собственный C Python API не слишком сложный, , но вам нужно создать целый модуль, а затем класс. Это было бы проще, если вы выставили процедурный интерфейс, а не , чем класс. Если у вас есть только один экземпляр устройства, это будет .
SWIG очень подходит для определения классов C++ и , генерируя модуль Python, который их содержит. Полученный код является относительно сложным, поскольку SWIG пытается охватить все возможные версии Python ; для чего угодно 2.7 или новее (и возможно немного раньше), вы можете делать все непосредственно в C++, без промежуточного Python.
Boost широко использует шаблоны. Это не действительно подходящее решение проблемы; он добавляет много сложности для чего-то относительно простого, если сделать это с помощью внешних инструментов, а не метапрограммировать. Тем не менее, если базовая сложностьне пугает вас, может оказаться, что трудно использовать .
Я не знаком с Китоном.
Во всем мире, если у вас есть только один экземпляр одного простого класса, с использованием родного C API, вероятно, не сложнее, чем других решений, и вводит минимум добавленной внутренней сложности.
На данный момент мне нужен только один экземпляр этого класса. Но если это не так сложно, чтобы иметь возможность обрабатывать несколько экземпляров класса, я думаю, что это может стоить того. – Phyks
Извините, я испортил последний комментарий ...: На данный момент мне нужен только один экземпляр этого класса. Но если это не так сложно, чтобы иметь возможность обрабатывать несколько экземпляров класса, я думаю, что это может стоить того. Мне нужно, чтобы мой сгенерированный код Python был совместимым с Python 3.3+. Я посмотрю на SWIG и стандартный C API. – Phyks
Это немного сложнее: сначала нужно создать модуль и его функции, а затем добавить к нему класс. Определение класса не является сложным, но оно многословно: существует огромная структура, которую вы должны заполнить, например. –