Предоставление Python нового типа во время выполнения

1

Я прошел и определил свои новые типы, сохранил их в pytypeobject и назвал следующие функции (после инициализации интерпретатора):

PyType_Ready(); //это принимает мои определенные типизированные

PyModule_AddObject(); // добавляет определенный тип к модулю, который я создал с помощью PyModule_Create();

Теперь, когда я пытаюсь использовать тип, который я определил, интерпретатор говорит, что он не существует, поэтому я предполагаю, что есть еще один шаг, который нужно предпринять, чтобы добавить тип во время выполнения или есть какой-то другой набор шагов, которые я должен для достижения этого.

Любая помощь будет оценена.

Ошибка синтаксиса Python:

Traceback (most recent call last):
  File "testscript.py", line 1, in <module>
    import Bound
ImportError: No module named Bound

Содержимое тестового скрипта:

import Bound
l = Bound.Foo()

Bound - это имя, которое я определил для модуля, а Foo - это тип, который я пытаюсь определить для целей тестирования.

  • 1
    Пожалуйста, отправьте точное сообщение об ошибке, которое вы получили.
  • 0
    Также укажите точный синтаксис, который вы пытаетесь использовать для доступа к типу.
Показать ещё 6 комментариев
Теги:
module
runtime
python-extensions

1 ответ

2

Поэтому я понял, что мне нужно сделать, мне пришлось вызвать функцию перед Py_Initialize,

PyImport_AppendInittab( ModuleName, ModuleInitFunction );

Это добавляет имя модуля в словарь модуля python, поэтому, когда вы вызываете import ModuleName, если он в первый раз будет вызывать ModuleInitFunction (который у меня был, но не использовался в нужном месте), который создает модуль. Теперь, после создания модуля, вы можете продолжить добавлять к нему типы во время выполнения, что и я делаю.

В настоящий момент я могу успешно привязать определенные пользователем классы C++ к python во время выполнения, а затем использовать их в скрипте в нашем Game Engine. Сейчас я разрабатываю перерывы во время выполнения, но он должен быть запущен в течение следующих нескольких дней. В любом случае, если кто-либо еще решит включить python в игровой движок для сценариев, я уверен, что смогу помочь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню