Я хочу сделать эквивалент
class Foo(object): bar = 1
с использованием Python C API. Другими словами, я хочу создать класс Python, который имеет статическую переменную, используя C.
Как я могу это сделать?
Нашли это! Это просто вопрос установки элемента tp_dict объекта type и заполнения добавления записей в него для каждой из статических переменных. Следующий код C создает ту же статическую переменную, что и код Python выше:
PyTypeObject type; // ...other initialisation... type.tp_dict = PyDict_New(); PyDict_SetItemString(type.tp_dict, "bar", PyInt_FromLong(1));
Вы можете передать этот исходный код в Py_CompileString с соответствующими флагами.
Если у вас уже есть класс, вы можете использовать PyObject_SetAttr .