Как я могу использовать класс C++ в Python?
Вопрос
Я реализовал класс на C++.Я хочу использовать его с Python.Пожалуйста, предложите пошаговый метод и подробно опишите каждый шаг.Что-то вроде этого...
class Test{
private:
int n;
public:
Test(int k){
n=k;
}
void setInt(int k){
n = k;
}
int getInt(){
return n;
}
};
Теперь на Python
>>> T1 = Test(12)
>>> T1.getInt()
12
>>> T1.setInt(32)
>>> T1.getInt()
32
Пожалуйста, предложите. Как я могу это сделать?ПРИМЕЧАНИЕ:Я хотел бы знать ручной способ сделать это.Я не хочу зависимости от сторонних библиотек.
Решение
Посмотрите Boost.Python.Это библиотека для написания модулей Python на C++.
Также изучите СВИГ который также может обрабатывать модули для других языков сценариев.Раньше я использовал его для написания модулей для своего класса и использования их в Python.Прекрасно работает.
Вы можете сделать это вручную, используя API Python/C, написав интерфейс самостоятельно.Это довольно низкий уровень, но вы получите много дополнительных знаний о том, как работает Python (и они вам в любом случае понадобятся, когда вы будете использовать SWIG).
Другие советы
cтипы хороший.Он действительно прост в использовании и входит в стандартную комплектацию Python.К сожалению, он может взаимодействовать только с разделяемыми библиотеками (Unix) или DLL (Windows), имеющими интерфейс в стиле C, что означает, что вы не можете напрямую взаимодействовать с объектом C++.Но вы можете использовать систему дескрипторов, где дескриптор ссылается на конкретный объект.
>>> getInt(h)
12
Я думаю, что это просто, понятно и не требует дополнительных библиотек.
Я бы посоветовал вам попробовать SWIG или sip (KDE/PyQt).
СВИГ-ссылка: http://www.swig.org/
SIP-ссылка: http://freshmeat.net/projects/python-sip/
Их можно использовать для обертывания классов C++ и предоставления им Pythonic-интерфейса.