如何通过C API在Python类中创建静态变量?

8 投票
2 回答
831 浏览
提问于 2025-04-15 17:18

我想用Python的C接口做一个类似的事情:

class Foo(object):
  bar = 1

换句话说,我想用C语言创建一个Python类,并且这个类里有一个静态变量。

我该怎么做呢?

2 个回答

2

你可以把那段源代码传给 Py_CompileString,并加上合适的标志。

如果你已经有了这个类,可以使用 PyObject_SetAttr

5

找到了!其实就是设置类型对象的tp_dict元素,然后为每个静态变量添加条目。下面的C代码创建了和上面Python代码一样的静态变量:

PyTypeObject type;
// ...other initialisation...
type.tp_dict = PyDict_New();
PyDict_SetItemString(type.tp_dict, "bar", PyInt_FromLong(1));

撰写回答