![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: нет Всего: 44 |
Специалисты по питону, подскажите одну такую вешь.
Есть некотрый клас, написанный на С++, надо иметь возможность в програме из питоны, создавать объекты этого класса и/или вызывать его методы. Что для этого надо сделать. Обязательно ли для этого на базе класса создавать COM-объект. Плиз, помогите -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
skalex |
|
|||
![]() Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: нет Всего: 23 |
Попробуйте посмотреть вот здесь: http://docs.python.org/ext/ext.html
|
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
Можно посмотреть также в сторону Boost.Python - довольно удобная библиотека для связывания Python и C++.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: нет Всего: 44 |
спасибо за ссылочки.
Я использую ActivePython 2.4. Проблема, нтеграции его в С++. Задача приблезительно такая: есть с++ класс, есть его объет. У обякта есть метод. который по строке текста запускает интепритатор питона. Причем в этой строке текста надо иметь возможность вызывать методы и самого этого класса Вот код
результат выдает следующий 0 99 Traceback (most recent call last): File "<string>", line 6, in ? AttributeError: 'PyCObject' object has no attribute 'GetI' [6597 refs] Т.е. метода моего он по прежнему не знает, тоже самое и со совйством (например i). если метод делаю виртуальным ситуация не меняется. Я только начинаю с этим разбиратся, так что вполне возможно код бреждовый, но может хоть намекнете, как это по человечески делается ![]() -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: нет Всего: 44 |
А, еще один интересный момент.
Когда я выполняю строку
Извеняюсь но косательно последнего примера, я модуль вместо test, назвала MyTestModule, что бы ни скем не дублировать названия ![]() Так вот, когда я пытаюсь получить информацию про мой модуль, получаю пустой список. Т.е. модуль он находит, а вот толи класса, то ли его методов не видит ![]() -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: нет Всего: 44 |
Судя по всему мою проблему без bost или SWIG не решить
![]() Void будь человеком, объясни рсским по белому что это и с чем это едят, или дай ссылку на РУССКОЕ объяснение, а то я чего-то слабо сейчас соображаю ![]() -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: нет Всего: 44 |
И еще boost::python где можно скачать.
Или я не правильно ищу, но на http://www.boost.org/libs/libraries.htm нашло только документацию. -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
Void |
|
||||||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
С удовольствием, хотя я сам занимался этим только на уровне поиграться. Приведенный пример с использованием Boost.Python будет выглядет так:
Работает так:
Объяснить что-то еще я вряд ли смогу, если будут вопросы или проблемы - попробуем разобраться ![]()
Отдельного дистрибутива нет, там много зависимостей от остального кода Boost. Лучше всего целиком скачать Boost (версия 1.32 - 8.46 Мб). Я попробовал выдрать библиотеку прилагаемой утилиткой bcp - получилось 880 Кб (RAR). Могу переслать, но как оно будет собираться и будет ли вообще - гарантировать не могу. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||||
|
|||||||||
Katsura |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 31.7.2010 Репутация: нет Всего: нет |
В этой строке создается копия объекта this, и если объект MyObj будет изменен в питон-скрипте, то эти изменения не повлияют на this. Так вот - как передать ссылку именно на this объект, а не на его копию? |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |