【发布时间】:2009-12-23 11:59:20
【问题描述】:
我想做相当于
class Foo(object):
bar = 1
使用 Python 的 C API。换句话说,我想使用 C 创建一个具有静态变量的 Python 类。
我该怎么做?
【问题讨论】:
我想做相当于
class Foo(object):
bar = 1
使用 Python 的 C API。换句话说,我想使用 C 创建一个具有静态变量的 Python 类。
我该怎么做?
【问题讨论】:
找到了!只需设置类型对象的 tp_dict 元素并为每个静态变量填充添加条目即可。以下 C 代码创建与上面 Python 代码相同的静态变量:
PyTypeObject type;
// ...other initialisation...
type.tp_dict = PyDict_New();
PyDict_SetItemString(type.tp_dict, "bar", PyInt_FromLong(1));
【讨论】:
您可以使用适当的标志将该源代码传递给Py_CompileString。
如果你已经有课程,你可以使用PyObject_SetAttr。
【讨论】: