Как я могу использовать класс С++ в Python?
Я реализовал класс в С++. Я хочу использовать его с 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
Пожалуйста, предложите. Как я могу это сделать?
ПРИМЕЧАНИЕ. Я хотел бы знать ручной способ сделать это. Мне не нужна зависимость сторонней библиотеки.
Ответы
Ответ 1
Посмотрите Boost.Python. Это библиотека для написания модулей python с С++.
Также рассмотрите SWIG, который также может обрабатывать модули для других языков сценариев. Я использовал его в прошлом, чтобы писать модули для своего класса и использовать их в python. Отлично работает.
Вы можете сделать это вручную, используя Python/C API, самостоятельно создавая интерфейс. Это довольно низкий уровень, но вы получите много дополнительного знания о том, как Python работает за сценой (и вам это понадобится, когда вы будете использовать SWIG в любом случае).
Ответ 2
ctypes - это хорошо. Он очень прост в использовании, и он поставляется с Python. К сожалению, он может общаться только с общими библиотеками (Unix) или DLL (Windows), которые имеют интерфейс C-стиля, что означает, что вы не можете напрямую взаимодействовать с объектом С++. Но вы можете использовать систему дескрипторов, где дескриптор относится к определенному объекту.
>>> getInt(h)
12
Я думаю, что это просто, легко понять и не требует дополнительных библиотек.
Ответ 3
Я предлагаю вам попробовать SWIG или sip (KDE/PyQt).
Ссылка SWIG: http://www.swig.org/
Ссылка SIP: http://freshmeat.net/projects/python-sip/
Они могут использоваться для переноса классов С++ и предоставления им интерфейса Pythonic.