Как я могу создать статическую переменную в классе Python через C API? - PullRequest
8 голосов
/ 23 декабря 2009

Я хочу сделать эквивалент

class Foo(object):
  bar = 1

с использованием Python C API. Другими словами, я хочу создать класс Python, который имеет статическую переменную, используя C.

Как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 04 января 2010

Нашли это! Это просто вопрос установки элемента tp_dict объекта type и заполнения добавления записей в него для каждой из статических переменных. Следующий код C создает ту же статическую переменную, что и код Python выше:

PyTypeObject type;
// ...other initialisation...
type.tp_dict = PyDict_New();
PyDict_SetItemString(type.tp_dict, "bar", PyInt_FromLong(1));
2 голосов
/ 23 декабря 2009

Вы можете передать этот исходный код в Py_CompileString с соответствующими флагами.

Если у вас уже есть класс, вы можете использовать PyObject_SetAttr .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...