Вопрос

Я реализовал класс на 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-интерфейса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top