Подтвердить что ты не робот

Как я могу использовать класс С++ в 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

Пожалуйста, предложите. Как я могу это сделать? ПРИМЕЧАНИЕ. Я хотел бы знать ручной способ сделать это. Мне не нужна зависимость сторонней библиотеки.

4b9b3361

Ответ 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.